File: Platform.swift

package info (click to toggle)
swiftlang 6.1.3-1
  • links: PTS, VCS
  • area: main
  • in suites: forky
  • size: 2,791,532 kB
  • sloc: cpp: 9,901,743; ansic: 2,201,431; asm: 1,091,827; python: 308,252; objc: 82,166; f90: 80,126; lisp: 38,358; pascal: 25,559; sh: 20,429; ml: 5,058; perl: 4,745; makefile: 4,484; awk: 3,535; javascript: 3,018; xml: 918; fortran: 664; cs: 573; ruby: 396
file content (79 lines) | stat: -rw-r--r-- 3,037 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
/*
 This source file is part of the Swift.org open source project

 Copyright (c) 2021-2024 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 Swift project authors
*/

extension SymbolGraph {
    /// A ``Platform`` describes the deployment environment for a ``Module-swift.struct``.
    public struct Platform: Codable, Equatable {
        /**
         The name of the architecture that this module targets, such as `x86_64` or `arm64`. If the module doesn't have a specific architecture, this may be undefined.
         */
        public var architecture: String?

        /**
         The platform vendor from which this module came, such as `apple` or `linux`.
         If there is no specific platform vendor, this may be undefined.
         */
        public var vendor: String?

        /**
         The operating system intended as the run environment. If no operating system is required, this may be undefined.
         */
        public var operatingSystem: OperatingSystem?

        /**
         The running environment on the platform.

         For example, software originally meant for the iOS operating system
         can run on macOS via the "macCatalyst" system, in which the
         `operatingSystem` is `ios` and the `environment` is `macabi`.
         */
        public var environment: String?

        /**
         The name of the platform as it is generally known.

         For example, the *macCatalyst* platform corresponds to an
         operating system of *iOS* and a running environment of *macabi*.
         */
        public var name: String? {
            guard let os = operatingSystem?.name else {
                return nil
            }
            switch os {
            case "macosx", "macos":
                return SymbolGraph.Symbol.Availability.Domain.macOS
            case "ios":
                if environment == "macabi" {
                    return SymbolGraph.Symbol.Availability.Domain.macCatalyst

                } else {
                    return SymbolGraph.Symbol.Availability.Domain.iOS
                }
            case "watchos":
                return SymbolGraph.Symbol.Availability.Domain.watchOS
            case "tvos":
                return SymbolGraph.Symbol.Availability.Domain.tvOS
            case "visionos":
                return SymbolGraph.Symbol.Availability.Domain.visionOS
            case "linux":
                return SymbolGraph.Symbol.Availability.Domain.linux
            default:
                return "Unsupported OS: \(os)"
            }
        }

        public init(architecture: String? = nil, vendor: String? = nil, operatingSystem: OperatingSystem? = nil, environment: String? = nil) {
            self.architecture = architecture
            self.vendor = vendor
            self.operatingSystem = operatingSystem
            self.environment = environment
        }
    }
}