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
|
/*
This source file is part of the Swift.org open source project
Copyright (c) 2021-2023 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
*/
import Foundation
extension SymbolGraph.Symbol {
/// The arguments of a callable symbol.
public struct FunctionSignature: Mixin, Codable {
enum CodingKeys: String, CodingKey {
case parameters
case returns
}
public static let mixinKey = "functionSignature"
/**
The parameters of the function.
*/
public var parameters: [FunctionParameter]
/**
The fragments spelling out the return type of the function signature if applicable.
*/
public var returns: [DeclarationFragments.Fragment]
public init(parameters: [SymbolGraph.Symbol.FunctionSignature.FunctionParameter], returns: [SymbolGraph.Symbol.DeclarationFragments.Fragment]) {
self.parameters = parameters
self.returns = returns
}
public init(from decoder: Decoder) throws {
let container = try decoder.container(keyedBy: CodingKeys.self)
parameters = try container.decodeIfPresent([FunctionParameter].self, forKey: .parameters) ?? []
returns = try container.decodeIfPresent([DeclarationFragments.Fragment].self, forKey: .returns) ?? []
}
public func encode(to encoder: Encoder) throws {
var container = encoder.container(keyedBy: CodingKeys.self)
try container.encode(parameters, forKey: .parameters)
try container.encode(returns, forKey: .returns)
}
}
/// Convenience method to fetch the function signature mixin value.
public var functionSignature : FunctionSignature? {
(mixins[FunctionSignature.mixinKey] as? FunctionSignature)
}
}
|