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

Unified Diff: ppapi/generators/idl_generator.py

Issue 7715036: More multi-version support (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 9 years, 4 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: ppapi/generators/idl_generator.py
===================================================================
--- ppapi/generators/idl_generator.py (revision 97752)
+++ ppapi/generators/idl_generator.py (working copy)
@@ -20,7 +20,7 @@
#
# Base class for generators. This class provides a mechanism for
# adding new generator objects to the IDL driver. To use this class
-# override the GenerateVersion and GenerateRange members, and
+# override the GenerateRelease and GenerateRange members, and
# instantiate one copy of the class in the same module which defines it to
# register the generator. After the AST is generated, call the static Run
# member which will check every registered generator to see which ones have
@@ -75,13 +75,15 @@
else:
vmin = range_list[0]
vmax = range_list[1]
- ret = self.GenerateRange(ast, vmin, vmax, options)
- if not ret:
+ vmin = ast.releases.index(vmin)
+ vmax = ast.releases.index(vmax) + 1
+ ret = self.GenerateRange(ast, ast.releases[vmin:vmax], options)
+ if ret < 0:
self.Error('Failed to generate range %s : %s.' %(vmin, vmax))
# Otherwise this should be a single release generation
else:
if releasestr:
- ret = self.GenerateVersion(ast, releasestr, options)
+ ret = self.GenerateRelease(ast, releasestr, options)
if ret < 0:
self.Error('Failed to generate release %s.' % releasestr)
else:
@@ -91,7 +93,7 @@
self.Error('No range or release specified for %s.' % releasestr)
return self.errors
- def GenerateVersion(self, ast, release, options):
+ def GenerateRelease(self, ast, release, options):
__pychecker__ = 'unusednames=ast,release,options'
self.Error("Undefined release generator.")
return 0
@@ -114,11 +116,53 @@
return fail_count
+class GeneratorByFile(Generator):
dmichael (off chromium) 2011/08/24 21:15:29 Could you add a brief comment for the class? By t
noelallen1 2011/08/24 22:43:06 Done.
+ def GenerateRelease(self, ast, release, options):
+ return self.GenerateRange(ast, [release], options)
+
+ def GenerateRange(self, ast, releases, options):
+ # Get list of out files
+ outlist = GetOption('out')
+ if outlist: outlist = outlist.split(',')
+
+ skipList = []
+ cnt = 0
+ for filenode in ast.GetListOf('File'):
+ # Skip this file if not required
+ if outlist and name not in outlist:
+ continue
+
+ # If this file has errors, skip it
+ if filenode.GetProperty('ERRORS') > 0:
+ skipList.append(filenode)
+ continue
+
+ # Create output file
+ out = self.GetOutFile(filenode, options)
+ self.GenerateHead(out, filenode, releases, options)
+ self.GenerateBody(out, filenode, releases, options)
+ self.GenerateTail(out, filenode, releases, options)
+
+ if out.Close(): cnt = cnt + 1
+
+ for filenode in skipList:
+ errcnt = filenode.GetProperty('ERRORS')
+ ErrOut.Log('%s : Skipped because of %d errors.' % (
+ filenode.GetName(), errcnt))
+
+ if skipList:
+ return -len(skipList)
+
+ if GetOption('diff'):
+ return -cnt
+ return cnt
+
+
check_release = 0
check_range = 0
-class GeneratorVersionTest(Generator):
- def GenerateVersion(self, ast, release, options = {}):
+class GeneratorReleaseTest(Generator):
+ def GenerateRelease(self, ast, release, options = {}):
__pychecker__ = 'unusednames=ast,release,options'
global check_release
check_map = {
@@ -182,6 +226,6 @@
if __name__ == '__main__':
- GeneratorVersionTest('Test Gen', 'testgen', 'Generator Class Test.')
+ GeneratorReleaseTest('Test Gen', 'testgen', 'Generator Class Test.')
sys.exit(Main(sys.argv[1:]))

Powered by Google App Engine
This is Rietveld 408576698