| //===----------------------------------------------------------------------===// |
| // |
| // 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 |
| // |
| //===----------------------------------------------------------------------===// |
| |
| %import gyb |
| %TMirrorDecl = gyb.parseTemplate("../common/MirrorDecl.gyb") |
| %TMirrorConformance = gyb.parseTemplate("../common/MirrorConformance.gyb") |
| %TMirrorBoilerplate = gyb.parseTemplate("../common/MirrorBoilerplate.gyb") |
| |
| % for Self in [['StrideTo','from','to','by'],['StrideThrough','from','through','by']]: |
| % MirrorDecl = gyb.executeTemplate(TMirrorDecl,introspecteeType=Self[0],genericArgs=['T'],genericConstraints={'T':'Strideable'}) |
| % MirrorConformance = gyb.executeTemplate(TMirrorConformance,introspecteeType=Self[0],genericArgs=['T'],genericConstraints={'T':'Strideable'}) |
| % MirrorBoilerplate = gyb.executeTemplate(TMirrorBoilerplate,introspecteeType=Self[0],genericArgs=['T'],genericConstraints={'T':'Strideable'}) |
| |
| ${MirrorDecl} { |
| ${MirrorBoilerplate} |
| |
| var count: Int { return 3 } |
| |
| subscript(i: Int) -> (String, _MirrorType) { |
| _precondition(i >= 0 && i < count, "_MirrorType access out of bounds") |
| switch i { |
| case 0: return ("${Self[1]}",_reflect(_value.start)) |
| case 1: return ("${Self[2]}",_reflect(_value.end)) |
| case 2: fallthrough |
| default: return ("${Self[3]}",_reflect(_value.stride)) |
| } |
| } |
| |
| var summary: String { return "" } |
| |
| var quickLookObject: PlaygroundQuickLook? { return nil } |
| } |
| |
| ${MirrorConformance} |
| |
| |