# ===--- gyb_stdlib_support.py -----------------------*- coding: utf-8 -*-===// # # This source file is part of the Swift.org open source project # # Copyright (c) 2014 - 2016 Apple Inc. and the Swift project authors # Licensed under Apache License v2.0 with Runtime Library Exception # # See http://swift.org/LICENSE.txt for license information # See http://swift.org/CONTRIBUTORS.txt for the list of Swift project authors TRAVERSALS = ['Forward', 'Bidirectional', 'RandomAccess'] def collectionForTraversal(traversal): # noqa (N802 function name should be lowercase) if traversal == 'Forward': return 'Collection' if traversal == 'Bidirectional': return 'BidirectionalCollection' if traversal == 'RandomAccess': return 'RandomAccessCollection' assert False, 'unknown traversal' def sliceTypeName(traversal, mutable, rangeReplaceable): # noqa (N802) name = collectionForTraversal(traversal).replace('Collection', 'Slice') if rangeReplaceable: name = 'RangeReplaceable' + name if mutable: name = 'Mutable' + name return name def protocolsForCollectionFeatures(traversal, mutable, rangeReplaceable): # noqa (N802) protocols = [collectionForTraversal(traversal)] if mutable: protocols.append('MutableCollection') if rangeReplaceable: protocols.append('RangeReplaceableCollection') return protocols def defaultIndicesForTraversal(traversal): # noqa (N802) if traversal == 'Forward': return 'DefaultIndices' if traversal == 'Bidirectional': return 'DefaultBidirectionalIndices' if traversal == 'RandomAccess': return 'DefaultRandomAccessIndices' assert False, 'unknown traversal' def documentationNameForTraversal(traversal): # noqa (N802) if traversal == 'Forward': return 'collection' if traversal == 'Bidirectional': return 'bidirectional collection' if traversal == 'RandomAccess': return 'random-access collection' assert False, 'unknown traversal'