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

Side by Side Diff: ppapi/generators/idl_release.py

Issue 11235016: Change the way we generate versions (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 8 years, 2 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « ppapi/generators/idl_propertynode.py ('k') | ppapi/generators/test_cgen/interface.idl » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 # Copyright (c) 2012 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be 3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file. 4 # found in the LICENSE file.
5 5
6 """ 6 """
7 IDLRelease for PPAPI 7 IDLRelease for PPAPI
8 8
9 This file defines the behavior of the AST namespace which allows for resolving 9 This file defines the behavior of the AST namespace which allows for resolving
10 a symbol as one or more AST nodes given a Release or range of Releases. 10 a symbol as one or more AST nodes given a Release or range of Releases.
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
100 if self.rmax <= rmin: 100 if self.rmax <= rmin:
101 return False 101 return False
102 if rmax is not None and self.rmin is not None: 102 if rmax is not None and self.rmin is not None:
103 if self.rmin >= rmax: 103 if self.rmin >= rmax:
104 return False 104 return False
105 105
106 if GetOption('release_debug'): 106 if GetOption('release_debug'):
107 InfoOut.Log('%f to %f is in %s' % (rmin, rmax, self)) 107 InfoOut.Log('%f to %f is in %s' % (rmin, rmax, self))
108 return True 108 return True
109 109
110 def GetMinMax(self, releases = None):
111 if not releases:
112 return self.rmin, self.rmax
113
114 if not self.rmin:
115 rmin = releases[0]
116 else:
117 rmin = str(self.rmin)
118 if not self.rmax:
119 rmax = releases[-1]
120 else:
121 rmax = str(self.rmax)
122 return (rmin, rmax)
123
124 def SetMin(self, release):
125 assert not self.rmin
126 self.rmin = release
127
110 def Error(self, msg): 128 def Error(self, msg):
111 ReportReleaseError(msg) 129 ReportReleaseError(msg)
112 130
113 def Warn(self, msg): 131 def Warn(self, msg):
114 ReportReleaseWarning(msg) 132 ReportReleaseWarning(msg)
115 133
116 134
117 # 135 #
118 # IDLReleaseList 136 # IDLReleaseList
119 # 137 #
120 # IDLReleaseList is a list based container for holding IDLRelease 138 # IDLReleaseList is a list based container for holding IDLRelease
121 # objects in order. The IDLReleaseList can be added to, and searched by 139 # objects in order. The IDLReleaseList can be added to, and searched by
122 # range. Objects are stored in order, and must be added in order. 140 # range. Objects are stored in order, and must be added in order.
123 # 141 #
124 class IDLReleaseList(object): 142 class IDLReleaseList(object):
125 def __init__(self): 143 def __init__(self):
126 self.nodes = [] 144 self._nodes = []
145
146 def GetReleases(self):
147 return self._nodes
127 148
128 def FindRelease(self, release): 149 def FindRelease(self, release):
129 for node in self.nodes: 150 for node in self._nodes:
130 if node.IsRelease(release): 151 if node.IsRelease(release):
131 return node 152 return node
132 return None 153 return None
133 154
134 def FindRange(self, rmin, rmax): 155 def FindRange(self, rmin, rmax):
135 assert (rmin == None) or rmin != rmax 156 assert (rmin == None) or rmin != rmax
136 157
137 out = [] 158 out = []
138 for node in self.nodes: 159 for node in self._nodes:
139 if node.InRange(rmin, rmax): 160 if node.InRange(rmin, rmax):
140 out.append(node) 161 out.append(node)
141 return out 162 return out
142 163
143 def AddNode(self, node): 164 def AddNode(self, node):
144 if GetOption('release_debug'): 165 if GetOption('release_debug'):
145 InfoOut.Log('\nAdding %s %s' % (node.Location(), node)) 166 InfoOut.Log('\nAdding %s %s' % (node.Location(), node))
146 last = None 167 last = None
147 168
148 # Check current releases in that namespace 169 # Check current releases in that namespace
149 for cver in self.nodes: 170 for cver in self._nodes:
150 if GetOption('release_debug'): InfoOut.Log(' Checking %s' % cver) 171 if GetOption('release_debug'): InfoOut.Log(' Checking %s' % cver)
151 172
152 # We should only be missing a 'release' tag for the first item. 173 # We should only be missing a 'release' tag for the first item.
153 if not node.rmin: 174 if not node.rmin:
154 node.Error('Missing release on overload of previous %s.' % 175 node.Error('Missing release on overload of previous %s.' %
155 cver.Location()) 176 cver.Location())
156 return False 177 return False
157 178
158 # If the node has no max, then set it to this one 179 # If the node has no max, then set it to this one
159 if not cver.rmax: 180 if not cver.rmax:
(...skipping 13 matching lines...) Expand all
173 # Otherwise, the previous max and current min should match 194 # Otherwise, the previous max and current min should match
174 # unless this is the unlikely case of something being only 195 # unless this is the unlikely case of something being only
175 # temporarily deprecated. 196 # temporarily deprecated.
176 if last and last.rmax != node.rmin: 197 if last and last.rmax != node.rmin:
177 node.Warn('Gap in release numbers.') 198 node.Warn('Gap in release numbers.')
178 199
179 # If we made it here, this new node must be the 'newest' 200 # If we made it here, this new node must be the 'newest'
180 # and does not overlap with anything previously added, so 201 # and does not overlap with anything previously added, so
181 # we can add it to the end of the list. 202 # we can add it to the end of the list.
182 if GetOption('release_debug'): InfoOut.Log('Done %s' % node) 203 if GetOption('release_debug'): InfoOut.Log('Done %s' % node)
183 self.nodes.append(node) 204 self._nodes.append(node)
184 return True 205 return True
185 206
186 # 207 #
187 # IDLReleaseMap 208 # IDLReleaseMap
188 # 209 #
189 # A release map, can map from an float interface release, to a global 210 # A release map, can map from an float interface release, to a global
190 # release string. 211 # release string.
191 # 212 #
192 class IDLReleaseMap(object): 213 class IDLReleaseMap(object):
193 def __init__(self, release_info): 214 def __init__(self, release_info):
(...skipping 10 matching lines...) Expand all
204 225
205 def GetVersions(self): 226 def GetVersions(self):
206 return self.versions 227 return self.versions
207 228
208 def GetRelease(self, version): 229 def GetRelease(self, version):
209 return self.version_to_release.get(version, None) 230 return self.version_to_release.get(version, None)
210 231
211 def GetReleases(self): 232 def GetReleases(self):
212 return self.releases 233 return self.releases
213 234
235 def GetReleaseRange(self):
236 return (self.releases[0], self.releases[-1])
237
238 def GetVersionRange(self):
239 return (self.versions[0], self.version[-1])
240
214 # 241 #
215 # Test Code 242 # Test Code
216 # 243 #
217 def TestReleaseNode(): 244 def TestReleaseNode():
218 FooXX = IDLRelease(None, None) 245 FooXX = IDLRelease(None, None)
219 Foo1X = IDLRelease('M14', None) 246 Foo1X = IDLRelease('M14', None)
220 Foo23 = IDLRelease('M15', 'M16') 247 Foo23 = IDLRelease('M15', 'M16')
221 248
222 assert FooXX.IsRelease('M13') 249 assert FooXX.IsRelease('M13')
223 assert FooXX.IsRelease('M14') 250 assert FooXX.IsRelease('M14')
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
314 TestReleaseNode() 341 TestReleaseNode()
315 TestReleaseListWarning() 342 TestReleaseListWarning()
316 TestReleaseListError() 343 TestReleaseListError()
317 TestReleaseListOK() 344 TestReleaseListOK()
318 print "Passed" 345 print "Passed"
319 return 0 346 return 0
320 347
321 348
322 if __name__ == '__main__': 349 if __name__ == '__main__':
323 sys.exit(Main(sys.argv[1:])) 350 sys.exit(Main(sys.argv[1:]))
351
OLDNEW
« no previous file with comments | « ppapi/generators/idl_propertynode.py ('k') | ppapi/generators/test_cgen/interface.idl » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698