| OLD | NEW |
| 1 # Copyright 2014 The Chromium Authors. All rights reserved. | 1 # Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
| 3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
| 4 """IDL type handling. | 4 """IDL type handling. |
| 5 | 5 |
| 6 Classes: | 6 Classes: |
| 7 IdlTypeBase | 7 IdlTypeBase |
| 8 IdlType | 8 IdlType |
| 9 IdlUnionType | 9 IdlUnionType |
| 10 IdlArrayOrSequenceType | 10 IdlArrayOrSequenceType |
| (...skipping 255 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 266 'member_types': self.member_types, | 266 'member_types': self.member_types, |
| 267 } | 267 } |
| 268 | 268 |
| 269 def __setstate__(self, state): | 269 def __setstate__(self, state): |
| 270 self.member_types = state['member_types'] | 270 self.member_types = state['member_types'] |
| 271 | 271 |
| 272 @property | 272 @property |
| 273 def is_union_type(self): | 273 def is_union_type(self): |
| 274 return True | 274 return True |
| 275 | 275 |
| 276 def single_matching_member_type(self, predicate): |
| 277 matching_types = filter(predicate, self.member_types) |
| 278 if len(matching_types) > 1: |
| 279 raise "%s is ambigious." % self.name |
| 280 return matching_types[0] if matching_types else None |
| 281 |
| 282 @property |
| 283 def string_member_type(self): |
| 284 return self.single_matching_member_type( |
| 285 lambda member_type: (member_type.is_string_type or |
| 286 member_type.is_enum)) |
| 287 |
| 288 @property |
| 289 def numeric_member_type(self): |
| 290 return self.single_matching_member_type( |
| 291 lambda member_type: member_type.is_numeric_type) |
| 292 |
| 293 @property |
| 294 def boolean_member_type(self): |
| 295 return self.single_matching_member_type( |
| 296 lambda member_type: member_type.base_type == 'boolean') |
| 297 |
| 276 @property | 298 @property |
| 277 def as_union_type(self): | 299 def as_union_type(self): |
| 278 # Note: Use this to "look through" a possible IdlNullableType wrapper. | 300 # Note: Use this to "look through" a possible IdlNullableType wrapper. |
| 279 return self | 301 return self |
| 280 | 302 |
| 281 @property | 303 @property |
| 282 def name(self): | 304 def name(self): |
| 283 """Return type name (or inner type name if nullable) | 305 """Return type name (or inner type name if nullable) |
| 284 | 306 |
| 285 http://heycam.github.io/webidl/#dfn-type-name | 307 http://heycam.github.io/webidl/#dfn-type-name |
| (...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 373 def is_nullable(self): | 395 def is_nullable(self): |
| 374 return True | 396 return True |
| 375 | 397 |
| 376 @property | 398 @property |
| 377 def name(self): | 399 def name(self): |
| 378 return self.inner_type.name + 'OrNull' | 400 return self.inner_type.name + 'OrNull' |
| 379 | 401 |
| 380 def resolve_typedefs(self, typedefs): | 402 def resolve_typedefs(self, typedefs): |
| 381 self.inner_type = self.inner_type.resolve_typedefs(typedefs) | 403 self.inner_type = self.inner_type.resolve_typedefs(typedefs) |
| 382 return self | 404 return self |
| OLD | NEW |