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

Unified Diff: ppapi/generators/idl_namespace.py

Issue 8045001: Update the IDL Generator to use Release instead of Version (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 9 years, 3 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
« no previous file with comments | « ppapi/generators/idl_lint.py ('k') | ppapi/generators/idl_node.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ppapi/generators/idl_namespace.py
===================================================================
--- ppapi/generators/idl_namespace.py (revision 102516)
+++ ppapi/generators/idl_namespace.py (working copy)
@@ -8,131 +8,25 @@
IDLNamespace for PPAPI
This file defines the behavior of the AST namespace which allows for resolving
-a symbol as one or more AST nodes given a version or range of versions.
+a symbol as one or more AST nodes given a release or range of releases.
"""
import sys
from idl_option import GetOption, Option, ParseOptions
from idl_log import ErrOut, InfoOut, WarnOut
-from idl_version import IDLVersion
+from idl_release import IDLRelease, IDLReleaseList
Option('label', 'Use the specifed label blocks.', default='Chrome')
-Option('namespace_debug', 'Use the specified version')
+Option('namespace_debug', 'Use the specified release')
#
-# IDLVersionList
-#
-# IDLVersionList is a list based container for holding IDLVersion
-# objects in order. The IDLVersionList can be added to, and searched by
-# range. Objects are stored in order, and must be added in order.
-#
-class IDLVersionList(object):
- def __init__(self):
- self.nodes = []
-
- def FindVersion(self, version):
- assert type(version) == float
-
- for node in self.nodes:
- if node.IsVersion(version):
- return node
- return None
-
- def FindRange(self, vmin, vmax):
- assert type(vmin) == float
- assert type(vmax) == float
- assert vmin != vmax
-
- out = []
- for node in self.nodes:
- if node.InRange(vmin, vmax):
- out.append(node)
- return out
-
- def AddNode(self, node):
- if GetOption('version_debug'):
- InfoOut.Log('\nAdding %s %s' % (node.Location(), node))
- last = None
-
- # Check current versions in that namespace
- for cver in self.nodes:
- if GetOption('version_debug'): InfoOut.Log(' Checking %s' % cver)
-
- # We should only be missing a 'version' tag for the first item.
- if not node.vmin:
- raise RuntimeError('Missing version')
- node.Error('Missing version on overload of previous %s.' %
- cver.Location())
- return False
-
- # If the node has no max, then set it to this one
- if not cver.vmax:
- cver.vmax = node.vmin
- if GetOption('version_debug'): InfoOut.Log(' Update %s' % cver)
-
- # if the max and min overlap, than's an error
- if cver.vmax > node.vmin:
- if node.vmax and cver.vmin >= node.vmax:
- node.Error('Declarations out of order.')
- else:
- node.Error('Overlap in versions.')
- return False
- last = cver
-
- # Otherwise, the previous max and current min should match
- # unless this is the unlikely case of something being only
- # temporarily deprecated.
- if last and last.vmax != node.vmin:
- node.Warn('Gap in version numbers.')
-
- # If we made it here, this new node must be the 'newest'
- # and does not overlap with anything previously added, so
- # we can add it to the end of the list.
- if GetOption('version_debug'): InfoOut.Log('Done %s' % node)
- self.nodes.append(node)
- return True
-
-#
-# IDLVersionMap
-#
-# A version map, can map from an float interface version, to a global
-# release string.
-#
-class IDLVersionMap(object):
- def __init__(self):
- self.version_to_release = {}
- self.release_to_version = {}
- self.versions = []
- self.releases = []
-
- def AddReleaseVersionMapping(self, release, version):
- self.version_to_release[version] = release
- self.release_to_version[release] = version
- self.versions = sorted(self.version_to_release.keys())
- self.releases = sorted(self.release_to_version.keys())
-
- def GetRelease(self, version):
- # Check for exact match
- if version in self.versions:
- return self.version_to_release[version]
-
- def GetVersion(self, release):
- if release > self.releases[-1]:
- release = self.releases[-1]
- elif release < self.releases[0]:
- release = self.releases[0]
- return self.release_to_version[release]
-
-
-
-#
# IDLNamespace
#
-# IDLNamespace provides a mapping between a symbol name and an IDLVersionList
-# which contains IDLVersion objects. It provides an interface for fetching
-# one or more IDLNodes based on a version or range of versions.
+# IDLNamespace provides a mapping between a symbol name and an IDLReleaseList
+# which contains IDLRelease objects. It provides an interface for fetching
+# one or more IDLNodes based on a release or range of releases.
#
class IDLNamespace(object):
def __init__(self, parent):
@@ -142,27 +36,27 @@
def Dump(self):
for name in self.namespace:
InfoOut.Log('NAME=%s' % name)
- for cver in self.namespace[name]:
+ for cver in self.namespace[name].nodes:
InfoOut.Log(' %s' % cver)
InfoOut.Log('')
- def FindVersion(self, name, version):
+ def FindRelease(self, name, release):
verlist = self.namespace.get(name, None)
if verlist == None:
if self.parent:
- return self.parent.FindVersion(name, version)
+ return self.parent.FindRelease(name, release)
else:
return None
- return verlist.FindVersion(version)
+ return verlist.FindRelease(release)
- def FindRange(self, name, vmin, vmax):
+ def FindRange(self, name, rmin, rmax):
verlist = self.namespace.get(name, None)
if verlist == None:
if self.parent:
- return self.parent.FindRange(name, vmin, vmax)
+ return self.parent.FindRange(name, rmin, rmax)
else:
return []
- return verlist.FindRange(vmin, vmax)
+ return verlist.FindRange(rmin, rmax)
def FindList(self, name):
verlist = self.namespace.get(name, None)
@@ -173,7 +67,7 @@
def AddNode(self, node):
name = node.GetName()
- verlist = self.namespace.setdefault(name,IDLVersionList())
+ verlist = self.namespace.setdefault(name,IDLReleaseList())
if GetOption('namespace_debug'):
print "Adding to namespace: %s" % node
return verlist.AddNode(node)
@@ -189,31 +83,31 @@
#
# Mocks the IDLNode to support error, warning handling, and string functions.
#
-class MockNode(IDLVersion):
- def __init__(self, name, vmin, vmax):
+class MockNode(IDLRelease):
+ def __init__(self, name, rmin, rmax):
self.name = name
- self.vmin = vmin
- self.vmax = vmax
+ self.rmin = rmin
+ self.rmax = rmax
self.errors = []
self.warns = []
self.properties = {
'NAME': name,
- 'version': vmin,
- 'deprecate' : vmax
+ 'release': rmin,
+ 'deprecate' : rmax
}
def __str__(self):
- return '%s (%s : %s)' % (self.name, self.vmin, self.vmax)
+ return '%s (%s : %s)' % (self.name, self.rmin, self.rmax)
def GetName(self):
return self.name
def Error(self, msg):
- if GetOption('version_debug'): print 'Error: %s' % msg
+ if GetOption('release_debug'): print 'Error: %s' % msg
self.errors.append(msg)
def Warn(self, msg):
- if GetOption('version_debug'): print 'Warn: %s' % msg
+ if GetOption('release_debug'): print 'Warn: %s' % msg
self.warns.append(msg)
def GetProperty(self, name):
@@ -225,17 +119,17 @@
#
# Dumps all the information relevant to an add failure.
def DumpFailure(namespace, node, msg):
- global errors
- print '\n******************************'
- print 'Failure: %s %s' % (node, msg)
- for warn in node.warns:
- print ' WARN: %s' % warn
- for err in node.errors:
- print ' ERROR: %s' % err
- print '\n'
- namespace.Dump()
- print '******************************\n'
- errors += 1
+ global errors
+ print '\n******************************'
+ print 'Failure: %s %s' % (node, msg)
+ for warn in node.warns:
+ print ' WARN: %s' % warn
+ for err in node.errors:
+ print ' ERROR: %s' % err
+ print '\n'
+ namespace.Dump()
+ print '******************************\n'
+ errors += 1
# Add expecting no errors or warnings
def AddOkay(namespace, node):
@@ -258,26 +152,27 @@
DumpFailure(namespace, node, 'Expected errors')
if msg not in node.errors:
DumpFailure(namespace, node, 'Expected error: %s' % msg)
+ print ">>%s<<\n>>%s<<\n" % (node.errors[0], msg)
-# Verify that a FindVersion call on the namespace returns the expected node.
-def VerifyFindOne(namespace, name, version, node):
+# Verify that a FindRelease call on the namespace returns the expected node.
+def VerifyFindOne(namespace, name, release, node):
global errors
- if (namespace.FindVersion(name, version) != node):
- print "Failed to find %s as version %f of %s" % (node, version, name)
+ if (namespace.FindRelease(name, release) != node):
+ print "Failed to find %s as release %f of %s" % (node, release, name)
namespace.Dump()
print "\n"
errors += 1
# Verify that a FindRage call on the namespace returns a set of expected nodes.
-def VerifyFindAll(namespace, name, vmin, vmax, nodes):
+def VerifyFindAll(namespace, name, rmin, rmax, nodes):
global errors
- out = namespace.FindRange(name, vmin, vmax)
+ out = namespace.FindRange(name, rmin, rmax)
if (out != nodes):
- print "Found [%s] instead of[%s] for versions %f to %f of %s" % (
+ print "Found [%s] instead of[%s] for releases %f to %f of %s" % (
' '.join([str(x) for x in out]),
' '.join([str(x) for x in nodes]),
- vmin,
- vmax,
+ rmin,
+ rmax,
name)
namespace.Dump()
print "\n"
@@ -300,8 +195,9 @@
AddOkay(namespace, FooXX)
AddOkay(namespace, Foo1X)
AddOkay(namespace, Foo3X)
- # Verify we fail to add a node between undeprecated versions
- AddError(namespace, Foo2X, 'Overlap in versions.')
+ # Verify we fail to add a node between undeprecated releases
+ AddError(namespace, Foo2X,
+ 'Overlap in releases: 3.0 vs 2.0 when adding foo (2.0 : None)')
BarXX = MockNode('bar', None, None)
Bar12 = MockNode('bar', 1.0, 2.0)
@@ -309,12 +205,12 @@
Bar34 = MockNode('bar', 3.0, 4.0)
- # Verify we succeed with fully qualified versions
+ # Verify we succeed with fully qualified releases
namespace = IDLNamespace(namespace)
AddOkay(namespace, BarXX)
AddOkay(namespace, Bar12)
# Verify we warn when detecting a gap
- AddWarn(namespace, Bar34, 'Gap in version numbers.')
+ AddWarn(namespace, Bar34, 'Gap in release numbers.')
# Verify we fail when inserting into this gap
# (NOTE: while this could be legal, it is sloppy so we disallow it)
AddError(namespace, Bar23, 'Declarations out of order.')
@@ -323,7 +219,7 @@
VerifyFindOne(namespace, 'bar', 0.0, BarXX)
VerifyFindAll(namespace, 'bar', 0.5, 1.5, [BarXX, Bar12])
- # Verify the correct version of the object is found recursively
+ # Verify the correct release of the object is found recursively
VerifyFindOne(namespace, 'foo', 0.0, FooXX)
VerifyFindOne(namespace, 'foo', 0.5, FooXX)
VerifyFindOne(namespace, 'foo', 1.0, Foo1X)
« no previous file with comments | « ppapi/generators/idl_lint.py ('k') | ppapi/generators/idl_node.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698