<!--

  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License</name></exclude> you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.

-->
<royale-config>

    <compiler>
        <accessible>true</accessible>
        
        <locale/>
        
        <library-path/>
        
        <warn-no-constructor>false</warn-no-constructor>
    </compiler>
    
    <typedefs>
        <path-element>../javascript/missing.js</path-element>
        <path-element>../../../target/downloads/es3.js</path-element>
        <path-element>../../../target/downloads/es5.js</path-element>
        <path-element>../../../target/downloads/es6.js</path-element>
        <path-element>../../../target/downloads/es6_collections.js</path-element>

        <path-element>../../../target/downloads/browser/w3c_anim_timing.js</path-element>
        <path-element>../../../target/downloads/browser/w3c_audio.js</path-element>
        <path-element>../../../target/downloads/browser/w3c_batterystatus.js</path-element>
        <path-element>../../../target/downloads/browser/w3c_composition_event.js</path-element>
        <path-element>../../../target/downloads/browser/w3c_css.js</path-element>
        <path-element>../../../target/downloads/browser/w3c_css3d.js</path-element>
        <path-element>../../../target/downloads/browser/w3c_device_sensor_event.js</path-element>
        <path-element>../../../target/downloads/browser/w3c_dom1.js</path-element>
        <path-element>../../../target/downloads/browser/w3c_dom2.js</path-element>
        <path-element>../../../target/downloads/browser/w3c_dom3.js</path-element>
        <!-- path-element>../../../target/downloads/browser/w3c_dom4.js</path-element>-->
        <path-element>../../../target/downloads/browser/w3c_elementtraversal.js</path-element>
        <path-element>../../../target/downloads/browser/w3c_event.js</path-element>
        <path-element>../../../target/downloads/browser/w3c_event3.js</path-element>
        <path-element>../../../target/downloads/browser/w3c_gamepad.js</path-element>
        <path-element>../../../target/downloads/browser/w3c_geolocation.js</path-element>
        <path-element>../../../target/downloads/browser/w3c_indexeddb.js</path-element>
        <path-element>../../../target/downloads/browser/w3c_midi.js</path-element>
        <path-element>../../../target/downloads/browser/w3c_navigation_timing.js</path-element>
        <path-element>../../../target/downloads/browser/w3c_permissions.js</path-element>
        <path-element>../../../target/downloads/browser/w3c_pointer_events.js</path-element>
        <path-element>../../../target/downloads/browser/w3c_range.js</path-element>
        <path-element>../../../target/downloads/browser/w3c_requestidlecallback.js</path-element>
        <path-element>../../../target/downloads/browser/w3c_rtc.js</path-element>
        <path-element>../../../target/downloads/browser/w3c_screen_orientation.js</path-element>
        <path-element>../../../target/downloads/browser/w3c_selectors.js</path-element>
        <!-- path-element>../../../target/downloads/browser/w3c_serviceworker.js</path-element>-->
        <path-element>../../../target/downloads/browser/w3c_speech.js</path-element>
        <path-element>../../../target/downloads/browser/w3c_touch_event.js</path-element>
        <!-- path-element>../../../target/downloads/browser/w3c_webcrypto.js</path-element>-->
        <path-element>../../../target/downloads/browser/w3c_xml.js</path-element>

        <path-element>../../../target/downloads/browser/whatwg_encoding.js</path-element>

        <!-- <path-element>../../../target/downloads/browser/chrome.js</path-element> -->
        <!-- path-element>../../../target/downloads/browser/fetchapi.js</path-element>-->
        <path-element>../../../target/downloads/browser/fileapi.js</path-element>
        <path-element>../../../target/downloads/browser/flash.js</path-element>
        <path-element>../../../target/downloads/browser/gecko_css.js</path-element>
        <path-element>../../../target/downloads/browser/gecko_dom.js</path-element>
        <path-element>../../../target/downloads/browser/gecko_event.js</path-element>
        <path-element>../../../target/downloads/browser/gecko_xml.js</path-element>
        <path-element>../../../target/downloads/browser/html5.js</path-element>
        <path-element>../../../target/downloads/browser/ie_css.js</path-element>
        <path-element>../../../target/downloads/browser/ie_dom.js</path-element>
        <path-element>../../../target/downloads/browser/ie_event.js</path-element>
        <path-element>../../../target/downloads/browser/ie_vml.js</path-element>
        <path-element>../../../target/downloads/browser/intersection_observer.js</path-element>
        <path-element>../../../target/downloads/browser/intl.js</path-element>
        <path-element>../../../target/downloads/browser/iphone.js</path-element>
        <path-element>../../../target/downloads/browser/mediasource.js</path-element>
        <path-element>../../../target/downloads/browser/page_visibility.js</path-element>
        <path-element>../../../target/downloads/browser/streamsapi.js</path-element>
        <path-element>../../../target/downloads/browser/url.js</path-element>
        <path-element>../../../target/downloads/browser/v8.js</path-element>
        <path-element>../../../target/downloads/browser/webgl.js</path-element>
        <path-element>../../../target/downloads/browser/webkit_css.js</path-element>
        <path-element>../../../target/downloads/browser/webkit_dom.js</path-element>
        <path-element>../../../target/downloads/browser/webkit_event.js</path-element>
        <!-- path-element>../../../target/downloads/browser/webkit_notifications.js</path-element>-->
        <path-element>../../../target/downloads/browser/webkit_usercontent.js</path-element>
        <path-element>../../../target/downloads/browser/webstorage.js</path-element>
        <path-element>../../../target/downloads/browser/window.js</path-element>

        <path-element>../../../target/downloads/svg.js</path-element>
    </typedefs>

    <as-root>../../../target/generated-sources/externc</as-root>
    
    <field-exclude>
        <class>Window</class>
        <field>focus</field>
    </field-exclude>

    <class-exclude>
        <class>controlRange</class>
        <class>ITemplateArray</class>
        <!-- file-system API abandoned by W3C -->
        <class>DirectoryEntry</class>
        <class>DirectoryReader</class>
        <class>Entry</class>
        <class>FileEntry</class>
        <class>FileSystemFlags</class>
        <class>FileSystem</class>
        <class>LocalFileSystem</class>
        <class>Metadata</class>
        <class>requestFileSystem</class>
        <class>resolveLocalFileSystemURI</class>
        <class>webkitRequestFileSystem</class>
        <class>webkitResolveLocalFileSystemURI</class>
        <!-- file-writer API abandoned by W3C -->
        <class>BlobBuilder</class>
        <class>WebKitBlobBuilder</class>
        <class>FileSaver</class>
        <class>FileWriter</class>
    </class-exclude>
    
    <!-- Object.toString() is excluded by the ExternC compiler.  Otherwise
         int.toString(radix) becomes an illegal override.  The compiler should
         allow toString() usage in every object -->
    <exclude>
        <class>Array</class>
        <name>toSource</name>
    </exclude>
    <exclude>
        <class>Date</class>
        <name>valueOf</name>
    </exclude>
    <exclude>
        <class>String</class>
        <name>valueOf</name>
    </exclude>
    <exclude>
        <class>String</class>
        <name>raw</name>
    </exclude>
    <exclude>
        <class>Window</class>
        <name>requestFileSystem</name>
    </exclude>
    <exclude>
        <class>Window</class>
        <name>resolveLocalFileSystemURI</name>
    </exclude>
    <exclude>
        <class>Window</class>
        <name>webkitRequestFileSystem</name>
    </exclude>
    <exclude>
        <class>Window</class>
        <name>webkitResolveLocalFileSystemURI</name>
    </exclude>
    <exclude>
        <class>DataTransferItem</class>
        <name>webkitGetAsEntry</name>
    </exclude>
    <exclude>
        <class>Document</class>
        <name>loadXML</name>
    </exclude>
    <exclude>
        <class>Event</class>
        <name>initUIEvent</name>
    </exclude>
    <exclude>
        <class>Event</class>
        <name>initMessageEvent</name>
    </exclude>
    <exclude>
        <class>Element</class>
        <name>load</name>
    </exclude>
    <exclude>
        <class>Document</class>
        <name>open</name>
    </exclude>
    <exclude>
        <class>Document</class>
        <name>close</name>
    </exclude>
    <exclude>
        <class>Document</class>
        <name>createTreeWalker</name>
    </exclude>
    <!-- SVG -->
    <exclude><class>SVGStylable</class><name>className</name></exclude>
    <exclude><class>SVGStylable</class><name>style</name></exclude>
    <exclude><class>SVGLocatable</class><name>farthestViewportElement</name></exclude>
    <exclude><class>SVGLocatable</class><name>nearestViewportElement</name></exclude>
    

    <!-- read-only properties where we only emit a 'get' accessor method -->
    <field-readonly>
        <class>Date</class>
        <name>timezoneOffset</name>
    </field-readonly>
    
    <!-- externs use @const for both read-only as well as true constants
         and you can't give the const an initial value either.
         From a JS perspective that's fine, you can't write to a const or
         a read-only and the initial value doesn't matter since it will
         be provided by the extern, but we want true constants in order 
         to allow constants as parameter initializers and other places
         where compile-time constants are required -->
    
    <!-- int -->
    <true-constant>
        <class>int</class>
        <name>MAX_VALUE</name>
        <value>0x7fffffff</value>
    </true-constant>
    <true-constant>
        <class>int</class>
        <name>MIN_VALUE</name>
        <value>-0x80000000</value>
    </true-constant>

    <!-- uint -->
    <true-constant>
        <class>uint</class>
        <name>MAX_VALUE</name>
        <value>0xffffffff</value>
    </true-constant>
    <true-constant>
        <class>uint</class>
        <name>MIN_VALUE</name>
        <value>0</value>
    </true-constant>

    <!-- Number -->
    <true-constant>
        <class>Number</class>
        <name>NaN</name>
        <value>0/0</value>
    </true-constant>
    <true-constant>
        <class>Number</class>
        <name>NEGATIVE_INFINITY</name>
        <value>-1/0</value>
    </true-constant>
    <true-constant>
        <class>Number</class>
        <name>POSITIVE_INFINITY</name>
        <value>1/0</value>
    </true-constant>
    <true-constant>
        <class>Number</class>
        <name>MIN_VALUE</name>
        <value>4.9e-324</value>
    </true-constant>
    <true-constant>
        <class>Number</class>
        <name>MAX_VALUE</name>
        <value>1.7976931348623158e+308</value>
    </true-constant>
    <true-constant>
        <class>Number</class>
        <name>MIN_SAFE_INTEGER</name>
        <value>-9007199254740991</value>
    </true-constant>
    <true-constant>
        <class>Number</class>
        <name>MAX_SAFE_INTEGER</name>
        <value>9007199254740991</value>
    </true-constant>

    <!-- Math -->
    <true-constant>
        <class>Math</class>
        <name>E</name>
        <value>2.718281828459045</value>
    </true-constant>
    <true-constant>
        <class>Math</class>
        <name>LN10</name>
        <value>2.302585092994046</value>
    </true-constant>
    <true-constant>
        <class>Math</class>
        <name>LN2</name>
        <value>0.6931471805599453</value>
    </true-constant>
    <true-constant>
        <class>Math</class>
        <name>LOG10E</name>
        <value>0.4342944819032518</value>
    </true-constant>
    <true-constant>
        <class>Math</class>
        <name>LOG2E</name>
        <value>1.442695040888963387</value>
    </true-constant>
    <true-constant>
        <class>Math</class>
        <name>PI</name>
        <value>3.141592653589793</value>
    </true-constant>
    <true-constant>
        <class>Math</class>
        <name>SQRT1_2</name>
        <value>0.7071067811865476</value>
    </true-constant>
    <true-constant>
        <class>Math</class>
        <name>SQRT2</name>
        <value>1.4142135623730951</value>
    </true-constant>

    <!-- Array -->
    <true-constant>
        <class>Array</class>
        <name>CASEINSENSITIVE</name>
        <value>1</value>
    </true-constant>
    <true-constant>
        <class>Array</class>
        <name>DESCENDING</name>
        <value>2</value>
    </true-constant>
    <true-constant>
        <class>Array</class>
        <name>UNIQUESORT</name>
        <value>4</value>
    </true-constant>
    <true-constant>
        <class>Array</class>
        <name>RETURNINDEXEDARRAY</name>
        <value>8</value>
    </true-constant>
    <true-constant>
        <class>Array</class>
        <name>NUMERIC</name>
        <value>16</value>
    </true-constant>
    
</royale-config>
