| Index: ppapi/generators/idl_ast.py
|
| ===================================================================
|
| --- ppapi/generators/idl_ast.py (revision 102516)
|
| +++ ppapi/generators/idl_ast.py (working copy)
|
| @@ -6,10 +6,11 @@
|
|
|
| """Nodes for PPAPI IDL AST."""
|
|
|
| -from idl_namespace import IDLNamespace, IDLVersionMap
|
| +from idl_namespace import IDLNamespace
|
| from idl_node import IDLAttribute, IDLFile, IDLNode
|
| from idl_option import GetOption
|
| from idl_visitor import IDLVisitor
|
| +from idl_release import IDLReleaseList, IDLReleaseMap
|
|
|
| #
|
| # IDL Predefined types
|
| @@ -32,10 +33,8 @@
|
| # node is named, then place it in the appropriate namespace.
|
| #
|
| def Arrive(self, node, parent_namespace):
|
| - # Set version min and max based on properties
|
| - vmin = node.GetProperty('version')
|
| - vmax = node.GetProperty('deprecate')
|
| - node.SetVersionRange(vmin, vmax)
|
| + # If we are entering a parent, clear the local Label\
|
| + if node.IsA('File'): self.release_map = None
|
|
|
| # If this object is not a namespace aware object, use the parent's one
|
| if node.cls not in self.NamespaceSet:
|
| @@ -47,6 +46,13 @@
|
|
|
| # If this node is named, place it in its parent's namespace
|
| if parent_namespace and node.cls in IDLNode.NamedSet:
|
| + # Set version min and max based on properties
|
| + if self.release_map:
|
| + vmin = node.GetProperty('version')
|
| + vmax = node.GetProperty('deprecate')
|
| + rmin = self.release_map.GetRelease(vmin)
|
| + rmax = self.release_map.GetRelease(vmax)
|
| + node.SetReleaseRange(rmin, rmax)
|
| parent_namespace.AddNode(node)
|
|
|
| # Pass this namespace to each child in case they inherit it
|
| @@ -62,10 +68,11 @@
|
| if node.IsA('LabelItem'):
|
| return (node.GetName(), node.GetProperty('VALUE'))
|
| if node.IsA('Label') and node.GetName() == GetOption('label'):
|
| - vmap = IDLVersionMap()
|
| - for release, version in childdata:
|
| - vmap.AddReleaseVersionMapping(release, float(version))
|
| - node.parent.SetProperty("LABEL", vmap)
|
| + try:
|
| + self.release_map = IDLReleaseMap(childdata)
|
| + node.parent.release_map = self.release_map
|
| + except Exception as err:
|
| + node.Error('Unable to build release map: %s' % str(err))
|
| return None
|
|
|
|
|
| @@ -89,22 +96,6 @@
|
| return filenode
|
|
|
|
|
| -class IDLReleaseResolver(IDLVisitor):
|
| - def VisitFilter(self, node, data):
|
| - return node.IsA('AST','File', 'Label')
|
| -
|
| - def Depart(self, node, data, childdata):
|
| - if node.IsA('Label'):
|
| - return set([child.name for child in GetListOf('LabelItem')])
|
| - return childdata
|
| -
|
| -class IDLVersionMapDefault(IDLVersionMap):
|
| - def GetRelease(self, version):
|
| - return 'M13'
|
| -
|
| - def GetVersion(self, release):
|
| - return float(0.0)
|
| -
|
| #
|
| # IDLAst
|
| #
|
| @@ -124,7 +115,6 @@
|
| break
|
|
|
| IDLNode.__init__(self, 'AST', 'BuiltIn', 1, 0, extranodes + children)
|
| - self.SetProperty('LABEL', IDLVersionMapDefault())
|
| self.Resolve()
|
|
|
| def Resolve(self):
|
| @@ -136,8 +126,7 @@
|
| # Build an ordered list of all releases
|
| self.releases = set()
|
| for filenode in self.GetListOf('File'):
|
| - vmap = filenode.GetProperty('LABEL')
|
| - self.releases |= set(vmap.releases)
|
| + self.releases |= set(filenode.release_map.GetReleases())
|
| self.releases = sorted(self.releases)
|
|
|
| def SetTypeInfo(self, name, properties):
|
|
|