| OLD | NEW |
| 1 # Copyright 2013 The Chromium Authors. All rights reserved. | 1 # Copyright 2013 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 | 4 |
| 5 # This module's classes provide an interface to mojo modules. Modules are | 5 # This module's classes provide an interface to mojo modules. Modules are |
| 6 # collections of interfaces and structs to be used by mojo ipc clients and | 6 # collections of interfaces and structs to be used by mojo ipc clients and |
| 7 # servers. | 7 # servers. |
| 8 # | 8 # |
| 9 # A simple interface would be created this way: | 9 # A simple interface would be created this way: |
| 10 # module = mojom.generate.module.Module('Foo') | 10 # module = mojom.generate.module.Module('Foo') |
| (...skipping 576 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 587 | 587 |
| 588 def IsMoveOnlyKind(kind): | 588 def IsMoveOnlyKind(kind): |
| 589 return (not IsStringKind(kind) and IsObjectKind(kind)) or \ | 589 return (not IsStringKind(kind) and IsObjectKind(kind)) or \ |
| 590 IsAnyHandleKind(kind) or IsInterfaceKind(kind) or IsAssociatedKind(kind) | 590 IsAnyHandleKind(kind) or IsInterfaceKind(kind) or IsAssociatedKind(kind) |
| 591 | 591 |
| 592 | 592 |
| 593 def IsCloneableKind(kind): | 593 def IsCloneableKind(kind): |
| 594 def _IsCloneable(kind, visited_kinds): | 594 def _IsCloneable(kind, visited_kinds): |
| 595 if kind in visited_kinds: | 595 if kind in visited_kinds: |
| 596 # No need to examine the kind again. | 596 # No need to examine the kind again. |
| 597 return True | 597 return True |
| 598 visited_kinds.add(kind) | 598 visited_kinds.add(kind) |
| 599 if IsAnyHandleKind(kind) or IsInterfaceKind(kind) or IsAssociatedKind(kind): | 599 if IsAnyHandleKind(kind) or IsInterfaceKind(kind) or IsAssociatedKind(kind): |
| 600 return False | 600 return False |
| 601 if IsArrayKind(kind): | 601 if IsArrayKind(kind): |
| 602 return _IsCloneable(kind.kind, visited_kinds) | 602 return _IsCloneable(kind.kind, visited_kinds) |
| 603 if IsStructKind(kind) or IsUnionKind(kind): | 603 if IsStructKind(kind) or IsUnionKind(kind): |
| 604 for field in kind.fields: | 604 for field in kind.fields: |
| 605 if not _IsCloneable(field.kind, visited_kinds): | 605 if not _IsCloneable(field.kind, visited_kinds): |
| 606 return False | 606 return False |
| 607 if IsMapKind(kind): | 607 if IsMapKind(kind): |
| 608 # No need to examine the key kind, only primitive kinds and non-nullable | 608 # No need to examine the key kind, only primitive kinds and non-nullable |
| 609 # string are allowed to be key kinds. | 609 # string are allowed to be key kinds. |
| 610 return _IsCloneable(kind.value_kind, visited_kinds) | 610 return _IsCloneable(kind.value_kind, visited_kinds) |
| 611 return True | 611 return True |
| 612 | 612 |
| 613 return _IsCloneable(kind, set()) | 613 return _IsCloneable(kind, set()) |
| 614 | 614 |
| 615 | 615 |
| 616 def HasCallbacks(interface): | 616 def HasCallbacks(interface): |
| 617 for method in interface.methods: | 617 for method in interface.methods: |
| 618 if method.response_parameters != None: | 618 if method.response_parameters != None: |
| 619 return True | 619 return True |
| 620 return False | 620 return False |
| OLD | NEW |