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 |