Index: ppapi/generators/idl_generator.py |
=================================================================== |
--- ppapi/generators/idl_generator.py (revision 109691) |
+++ ppapi/generators/idl_generator.py (working copy) |
@@ -8,6 +8,7 @@ |
from idl_log import ErrOut, InfoOut, WarnOut |
from idl_option import GetOption, Option, ParseOptions |
+from idl_parser import ParseFiles |
GeneratorList = [] |
@@ -39,6 +40,7 @@ |
default='') |
GeneratorList.append(self) |
self.errors = 0 |
+ self.skip_list = [] |
def Error(self, msg): |
ErrOut.Log('Error %s : %s' % (self.name, msg)) |
@@ -68,6 +70,13 @@ |
print "Found releases: %s" % ast.releases |
+ # Generate list of files to ignore due to errors |
+ for filenode in ast.GetListOf('File'): |
+ # If this file has errors, skip it |
+ if filenode.GetProperty('ERRORS') > 0: |
+ self.skip_list.append(filenode) |
+ continue |
+ |
# Check for a range option which over-rides a release option |
if not releasestr and rangestr: |
range_list = rangestr.split(',') |
@@ -86,9 +95,9 @@ |
vmin = ast.releases.index(vmin) |
vmax = ast.releases.index(vmax) + 1 |
- range = ast.releases[vmin:vmax] |
+ releases = ast.releases[vmin:vmax] |
InfoOut.Log('Generate range %s of %s.' % (range, self.name)) |
- ret = self.GenerateRange(ast, range, options) |
+ ret = self.GenerateRange(ast, releases, options) |
if ret < 0: |
self.Error('Failed to generate range %s : %s.' %(vmin, vmax)) |
else: |
@@ -112,8 +121,8 @@ |
self.Error("Undefined release generator.") |
return 0 |
- def GenerateRange(self, ast, vmin, vmax, options): |
- __pychecker__ = 'unusednames=ast,vmin,vmax,options' |
+ def GenerateRange(self, ast, releases, options): |
+ __pychecker__ = 'unusednames=ast,releases,options' |
self.Error("Undefined range generator.") |
return 0 |
@@ -143,6 +152,11 @@ |
# GenerateTail - Writes the end of the file (closing include guard, etc...) |
# |
class GeneratorByFile(Generator): |
+ def GenerateFile(self, filenode, releases, options): |
+ __pychecker__ = 'unusednames=filenode,releases,options' |
+ self.Error("Undefined release generator.") |
+ return 0 |
+ |
def GenerateRelease(self, ast, release, options): |
return self.GenerateRange(ast, [release], options) |
@@ -154,23 +168,18 @@ |
skipList = [] |
cnt = 0 |
for filenode in ast.GetListOf('File'): |
+ # Ignore files with errors |
+ if filenode in self.skip_list: |
+ continue |
+ |
# Skip this file if not required |
if outlist and filenode.GetName() not in outlist: |
continue |
- # If this file has errors, skip it |
- if filenode.GetProperty('ERRORS') > 0: |
- skipList.append(filenode) |
- continue |
+ # Create the output file and increment out count if there was a delta |
+ if self.GenerateFile(filenode, releases, options): |
+ cnt = cnt + 1 |
- # 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.' % ( |
@@ -208,8 +217,8 @@ |
check_release = 0 |
return check_release == 1 |
- def GenerateRange(self, ast, vmin, vmax, options = {}): |
- __pychecker__ = 'unusednames=ast,vmin,vmax,options' |
+ def GenerateRange(self, ast, releases, options): |
+ __pychecker__ = 'unusednames=ast,releases,options' |
global check_range |
check_range = 1 |
return True |
@@ -244,7 +253,6 @@ |
def Main(args): |
if not args: return Test() |
- |
filenames = ParseOptions(args) |
ast = ParseFiles(filenames) |