| OLD | NEW | 
|---|
|  | (Empty) | 
| 1 # Copyright (C) 2013 Google Inc. All rights reserved. |  | 
| 2 # |  | 
| 3 # Redistribution and use in source and binary forms, with or without |  | 
| 4 # modification, are permitted provided that the following conditions are |  | 
| 5 # met: |  | 
| 6 # |  | 
| 7 #     * Redistributions of source code must retain the above copyright |  | 
| 8 # notice, this list of conditions and the following disclaimer. |  | 
| 9 #     * Redistributions in binary form must reproduce the above |  | 
| 10 # copyright notice, this list of conditions and the following disclaimer |  | 
| 11 # in the documentation and/or other materials provided with the |  | 
| 12 # distribution. |  | 
| 13 #     * Neither the name of Google Inc. nor the names of its |  | 
| 14 # contributors may be used to endorse or promote products derived from |  | 
| 15 # this software without specific prior written permission. |  | 
| 16 # |  | 
| 17 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |  | 
| 18 # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |  | 
| 19 # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |  | 
| 20 # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |  | 
| 21 # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |  | 
| 22 # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |  | 
| 23 # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |  | 
| 24 # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |  | 
| 25 # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |  | 
| 26 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |  | 
| 27 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |  | 
| 28 |  | 
| 29 """Read an IDL file or complete IDL interface, producing an IdlDefinitions objec
    t.""" |  | 
| 30 |  | 
| 31 import os.path |  | 
| 32 |  | 
| 33 import blink_idl_parser |  | 
| 34 import idl_definitions_builder |  | 
| 35 import idl_validator |  | 
| 36 import interface_dependency_resolver |  | 
| 37 |  | 
| 38 |  | 
| 39 class IdlReader: |  | 
| 40     def __init__(self, interface_dependencies_filename=None, additional_idl_file
    names=None, idl_attributes_filename=None, outputdir='', verbose=False): |  | 
| 41         if idl_attributes_filename: |  | 
| 42             self.extended_attribute_validator = idl_validator.IDLExtendedAttribu
    teValidator(idl_attributes_filename) |  | 
| 43         else: |  | 
| 44             self.extended_attribute_validator = None |  | 
| 45 |  | 
| 46         if interface_dependencies_filename: |  | 
| 47             self.interface_dependency_resolver = interface_dependency_resolver.I
    nterfaceDependencyResolver(interface_dependencies_filename, additional_idl_filen
    ames, self) |  | 
| 48         else: |  | 
| 49             self.interface_dependency_resolver = None |  | 
| 50 |  | 
| 51         self.parser = blink_idl_parser.BlinkIDLParser(outputdir=outputdir, verbo
    se=verbose) |  | 
| 52 |  | 
| 53     def read_idl_definitions(self, idl_filename): |  | 
| 54         """Returns an IdlDefinitions object for an IDL file, including all depen
    dencies.""" |  | 
| 55         basename = os.path.basename(idl_filename) |  | 
| 56         interface_name, _ = os.path.splitext(basename) |  | 
| 57         definitions = self.read_idl_file(idl_filename) |  | 
| 58         if self.interface_dependency_resolver: |  | 
| 59             should_generate_bindings = self.interface_dependency_resolver.resolv
    e_dependencies(definitions, interface_name) |  | 
| 60             if not should_generate_bindings: |  | 
| 61                 return None |  | 
| 62         return definitions |  | 
| 63 |  | 
| 64     def read_idl_file(self, idl_filename): |  | 
| 65         """Returns an IdlDefinitions object for an IDL file, without any depende
    ncies.""" |  | 
| 66         ast = blink_idl_parser.parse_file(self.parser, idl_filename) |  | 
| 67         definitions = idl_definitions_builder.build_idl_definitions_from_ast(ast
    ) |  | 
| 68         if self.extended_attribute_validator: |  | 
| 69             try: |  | 
| 70                 self.extended_attribute_validator.validate_extended_attributes(d
    efinitions) |  | 
| 71             except idl_validator.IDLInvalidExtendedAttributeError as error: |  | 
| 72                 raise idl_validator.IDLInvalidExtendedAttributeError("""IDL ATTR
    IBUTE ERROR in file %s: |  | 
| 73     %s |  | 
| 74     If you want to add a new IDL extended attribute, please add it to bindings/s
    cripts/IDLAttributes.txt and add an explanation to the Blink IDL document at htt
    p://chromium.org/blink/webidl |  | 
| 75     """ % (idl_filename, str(error))) |  | 
| 76 |  | 
| 77         return definitions |  | 
| OLD | NEW | 
|---|