Files
swift-mirror/SwiftCompilerSources/Sources/Basic/SourceLoc.swift
Josh Soref 66663b1286 Spelling basic (#42541)
* spelling: add

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: attributes

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: bridging

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: deserialization

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: initialize

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: invariants

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: lazily

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: occurred

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: offset

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: optimization

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: our

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: process

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: substitution

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: the operation

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: the

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

Co-authored-by: Josh Soref <jsoref@users.noreply.github.com>
2022-05-04 14:53:24 -07:00

74 lines
2.0 KiB
Swift

//===--- SourceLoc.swift - SourceLoc bridging utilities ------------------===//
//
// This source file is part of the Swift.org open source project
//
// Copyright (c) 2022 Apple Inc. and the Swift project authors
// Licensed under Apache License v2.0 with Runtime Library Exception
//
// See https://swift.org/LICENSE.txt for license information
// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
//
//===----------------------------------------------------------------------===//
public struct SourceLoc {
/// Points into a source file.
let locationInFile: UnsafePointer<UInt8>
public init?(locationInFile: UnsafePointer<UInt8>?) {
guard let locationInFile = locationInFile else {
return nil
}
self.locationInFile = locationInFile
}
public init?(bridged: BridgedSourceLoc) {
guard let locationInFile = bridged.pointer else {
return nil
}
self.init(locationInFile: locationInFile)
}
public var bridged: BridgedSourceLoc {
.init(pointer: locationInFile)
}
}
extension SourceLoc {
public func advanced(by n: Int) -> SourceLoc {
SourceLoc(locationInFile: locationInFile.advanced(by: n))!
}
}
extension Optional where Wrapped == SourceLoc {
public var bridged: BridgedSourceLoc {
self?.bridged ?? .init(pointer: nil)
}
}
public struct CharSourceRange {
private let start: SourceLoc
private let byteLength: Int
public init(start: SourceLoc, byteLength: Int) {
self.start = start
self.byteLength = byteLength
}
public init?(bridged: BridgedCharSourceRange) {
guard let start = SourceLoc(bridged: bridged.start) else {
return nil
}
self.init(start: start, byteLength: bridged.byteLength)
}
public var bridged: BridgedCharSourceRange {
.init(start: start.bridged, byteLength: byteLength)
}
}
extension Optional where Wrapped == CharSourceRange {
public var bridged: BridgedCharSourceRange {
self?.bridged ?? .init(start: .init(pointer: nil), byteLength: 0)
}
}