Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(102)

Unified Diff: Source/bindings/scripts/unstable/interface_dependency_resolver.py

Issue 124913002: IDL compiler: Pickle interface information (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: Source/bindings/scripts/unstable/interface_dependency_resolver.py
diff --git a/Source/bindings/scripts/unstable/interface_dependency_resolver.py b/Source/bindings/scripts/unstable/interface_dependency_resolver.py
index 5483681efcc8fb552255059b0712057855c898be..465dbc207bbd78e7360e5943b0237633b38a4042 100644
--- a/Source/bindings/scripts/unstable/interface_dependency_resolver.py
+++ b/Source/bindings/scripts/unstable/interface_dependency_resolver.py
@@ -38,6 +38,7 @@ instead it is just a dependency.
"""
import os.path
+import cPickle as pickle
class InterfaceNotFoundError(Exception):
@@ -51,13 +52,12 @@ class InvalidPartialInterfaceError(Exception):
class InterfaceDependencyResolver:
- def __init__(self, interface_dependencies_filename, additional_idl_filenames, reader):
+ def __init__(self, interfaces_filename, additional_idl_filenames, reader):
"""Inits dependency resolver.
Args:
- interface_dependencies_filename:
- filename of dependencies file (produced by
- compute_dependencies.py)
+ interfaces_filename:
+ filename of interfaces file (output by compute_dependencies.py)
additional_idl_filenames:
list of additional files, not listed in
interface_dependencies_file, for which bindings should
@@ -65,7 +65,8 @@ class InterfaceDependencyResolver:
reader:
IdlReader, used for reading dependency files
"""
- self.interface_dependencies = read_interface_dependencies_file(interface_dependencies_filename)
+ with open(interfaces_filename, 'r') as interfaces_file:
+ self.interface_dependencies = pickle.load(interfaces_file)
self.additional_interfaces = set()
for filename in additional_idl_filenames:
basename = os.path.basename(filename)
@@ -131,45 +132,6 @@ class InterfaceDependencyResolver:
return None
-def read_interface_dependencies_file(interface_dependencies_filename):
- """Reads the interface dependencies file, returns a dict for resolving dependencies.
-
- The format of the interface dependencies file is:
-
- Document.idl P.idl
- Event.idl
- Window.idl Q.idl R.idl S.idl
- ...
-
- The above indicates that:
- Document.idl depends on P.idl,
- Event.idl depends on no other IDL files, and
- Window.idl depends on Q.idl, R.idl, and S.idl.
-
- The head entries (first IDL file on a line) are the files that should
- have bindings generated.
-
- An IDL file that is a dependency of another IDL file (e.g., P.idl in the
- above example) does not have its own line in the dependency file:
- dependencies do not have bindings generated, and do not have their
- own dependencies.
-
- Args:
- interface_dependencies_filename: filename of file in above format
- Returns:
- dict of interface_name -> dependency_filenames
- """
- interface_dependencies = {}
- with open(interface_dependencies_filename) as interface_dependencies_file:
- for line in interface_dependencies_file:
- idl_filename, _, dependency_filenames_string = line.partition(' ')
- idl_basename = os.path.basename(idl_filename)
- interface_name, _ = os.path.splitext(idl_basename)
- dependency_filenames = dependency_filenames_string.split()
- interface_dependencies[interface_name] = dependency_filenames
- return interface_dependencies
-
-
def merge_interface_dependencies(target_interface, dependency_idl_filenames, reader):
"""Merge dependencies ('partial interface' and 'implements') in dependency_idl_filenames into target_interface.

Powered by Google App Engine
This is Rietveld 408576698