Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rename toSwift to fromABI #298

Merged
merged 1 commit into from
Sep 16, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions Docs/How it works.md
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ extension COMInterop when T == SWRT_IFoo {
var name: BSTR? = nil
defer { BStrBinding.release(&name) }
try COMError.fromABI(pointer.pointee.vtable.pointee.GetName(pointer, &name))
return BStrBinding.toSwift(name)
return BStrBinding.fromABI(name)
}
}

Expand Down Expand Up @@ -123,7 +123,7 @@ enum IFooBinding: COMBinding { // COMBinding conforms to ABIBinding

public static var interfaceID: COMInterfaceID { SWRT_IFoo.iid }

public static func toSwift(_ value: UnsafeMutablePointer<SWRT_IFoo>?) -> IFoo? {
public static func fromABI(_ value: UnsafeMutablePointer<SWRT_IFoo>?) -> IFoo? {
guard let value else { return nil }
return IFooImport(addingRef: value)
}
Expand Down
6 changes: 3 additions & 3 deletions Generator/Sources/SwiftWinRT/Writing/ABIBinding.swift
Original file line number Diff line number Diff line change
Expand Up @@ -124,9 +124,9 @@ fileprivate func writeStructBindingExtension(

let fields = structDefinition.fields.filter { $0.isInstance }

// public static func toSwift(_ value: ABIValue) -> SwiftValue { .init(field: value.Field, ...) }
// public static func fromABI(_ value: ABIValue) -> SwiftValue { .init(field: value.Field, ...) }
try writer.writeFunc(
visibility: .public, static: true, name: "toSwift",
visibility: .public, static: true, name: "fromABI",
params: [.init(label: "_", name: "value", type: abiType)],
returnType: .`self`) { writer in
if fields.isEmpty {
Expand Down Expand Up @@ -194,7 +194,7 @@ fileprivate func writeStructABIToSwiftInitializerParam(

if typeProjection.kind != .identity {
typeProjection.bindingType.write(to: &output)
output.write(".toSwift(")
output.write(".fromABI(")
}

SwiftIdentifier.write(abiValueName, to: &output)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -141,10 +141,10 @@ fileprivate func writeSwiftToABICall(
let typeProjection = param.typeProjection
if typeProjection.kind != .identity && param.passBy.isOutput {
if typeProjection.kind == .inert {
writer.writeStatement("\(param.name) = \(typeProjection.bindingType).toSwift(\(param.abiBindingName))")
writer.writeStatement("\(param.name) = \(typeProjection.bindingType).fromABI(\(param.abiBindingName))")
}
else {
writer.writeStatement("\(param.name) = \(typeProjection.bindingType).toSwift(consuming: &\(param.abiBindingName))")
writer.writeStatement("\(param.name) = \(typeProjection.bindingType).fromABI(consuming: &\(param.abiBindingName))")
}
}
}
Expand Down Expand Up @@ -186,9 +186,9 @@ fileprivate func writeSwiftToABICall(
case .identity where !returnCOMReference:
returnValue = returnParam.name
case .inert:
returnValue = "\(returnTypeBinding.bindingType).toSwift(\(returnParam.name))"
returnValue = "\(returnTypeBinding.bindingType).fromABI(\(returnParam.name))"
default:
returnValue = "\(returnTypeBinding.bindingType).toSwift(consuming: &\(returnParam.name))"
returnValue = "\(returnTypeBinding.bindingType).fromABI(consuming: &\(returnParam.name))"
}

writer.writeReturnStatement(value: returnValue)
Expand Down
2 changes: 1 addition & 1 deletion Generator/Sources/SwiftWinRT/Writing/VirtualTable.swift
Original file line number Diff line number Diff line change
Expand Up @@ -168,7 +168,7 @@ fileprivate func writeVirtualTableFuncImplementation(name: String, paramNames: [
fileprivate func writePrologueForParam(_ param: ParamProjection, to output: IndentedTextOutputStream) throws {
if param.passBy.isInput {
let declarator: SwiftVariableDeclarator = param.passBy.isOutput ? .var : .let
output.write("\(declarator) \(param.swiftBindingName) = \(param.bindingType).toSwift")
output.write("\(declarator) \(param.swiftBindingName) = \(param.bindingType).fromABI")
switch param.typeProjection.kind {
case .identity: fatalError("Case should have been ignored earlier.")
case .inert, .allocating:
Expand Down
8 changes: 4 additions & 4 deletions Support/Sources/ABIBindings/ABIBinding.swift
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,11 @@ public protocol ABIBinding {

/// Converts a value from its ABI to its Swift representation
/// without releasing the original value.
static func toSwift(_ value: ABIValue) -> SwiftValue
static func fromABI(_ value: ABIValue) -> SwiftValue

/// Converts a value from its ABI to its Swift representation,
/// releasing the original value.
static func toSwift(consuming value: inout ABIValue) -> SwiftValue
static func fromABI(consuming value: inout ABIValue) -> SwiftValue

/// Converts a value from its Swift to its ABI representation.
/// The resulting value should be released as its creation might have allocated resources.
Expand All @@ -28,9 +28,9 @@ public protocol ABIBinding {
}

extension ABIBinding {
public static func toSwift(consuming value: inout ABIValue) -> SwiftValue {
public static func fromABI(consuming value: inout ABIValue) -> SwiftValue {
defer { release(&value) }
return toSwift(value)
return fromABI(value)
}

public static func withABI<Result>(_ value: SwiftValue, _ closure: (ABIValue) throws -> Result) throws -> Result {
Expand Down
2 changes: 1 addition & 1 deletion Support/Sources/ABIBindings/BoolBinding.swift
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,6 @@ public enum BoolBinding: PODBinding {
public typealias SwiftValue = Bool

public static var abiDefaultValue: CBool { false }
public static func toSwift(_ value: CBool) -> Bool { value }
public static func fromABI(_ value: CBool) -> Bool { value }
public static func toABI(_ value: Bool) -> CBool { value }
}
2 changes: 1 addition & 1 deletion Support/Sources/ABIBindings/ClosedEnumBinding.swift
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,6 @@ public protocol ClosedEnumBinding: RawRepresentable, PODBinding

extension ClosedEnumBinding {
public static var abiDefaultValue: RawValue { RawValue.zero }
public static func toSwift(_ value: RawValue) -> Self { Self(rawValue: value)! }
public static func fromABI(_ value: RawValue) -> Self { Self(rawValue: value)! }
public static func toABI(_ value: Self) -> RawValue { value.rawValue }
}
2 changes: 1 addition & 1 deletion Support/Sources/ABIBindings/IdentityBinding.swift
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,5 @@ public protocol IdentityBinding: PODBinding where SwiftValue == ABIValue {}

extension IdentityBinding {
public static func toABI(_ value: SwiftValue) -> ABIValue { value }
public static func toSwift(_ value: ABIValue) -> SwiftValue { value }
public static func fromABI(_ value: ABIValue) -> SwiftValue { value }
}
2 changes: 1 addition & 1 deletion Support/Sources/ABIBindings/NumericBinding.swift
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,6 @@ public enum NumericBinding<Value: Numeric>: PODBinding {
public typealias SwiftValue = Value

public static var abiDefaultValue: ABIValue { Value.zero }
public static func toSwift(_ value: Value) -> Value { value }
public static func fromABI(_ value: Value) -> Value { value }
public static func toABI(_ value: Value) -> Value { value }
}
2 changes: 1 addition & 1 deletion Support/Sources/ABIBindings/OpenEnumBinding.swift
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,6 @@ public protocol OpenEnumBinding: RawRepresentable, PODBinding

extension OpenEnumBinding {
public static var abiDefaultValue: RawValue { RawValue.zero }
public static func toSwift(_ value: RawValue) -> Self { Self(rawValue: value) }
public static func fromABI(_ value: RawValue) -> Self { Self(rawValue: value) }
public static func toABI(_ value: Self) -> RawValue { value.rawValue }
}
2 changes: 1 addition & 1 deletion Support/Sources/ABIBindings/PODBinding.swift
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,6 @@ public protocol PODBinding: ABIBinding {
}

extension PODBinding {
public static func toSwift(consuming value: inout ABIValue) -> SwiftValue { toSwift(value) }
public static func fromABI(consuming value: inout ABIValue) -> SwiftValue { fromABI(value) }
public static func release(_ value: inout ABIValue) {}
}
2 changes: 1 addition & 1 deletion Support/Sources/ABIBindings/WideCharBinding.swift
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,6 @@ public enum WideCharBinding: PODBinding {
public typealias SwiftValue = Unicode.UTF16.CodeUnit

public static var abiDefaultValue: ABIValue { 0 }
public static func toSwift(_ value: UInt16) -> Unicode.UTF16.CodeUnit { value }
public static func fromABI(_ value: UInt16) -> Unicode.UTF16.CodeUnit { value }
public static func toABI(_ value: Unicode.UTF16.CodeUnit) -> UInt16 { value }
}
10 changes: 5 additions & 5 deletions Support/Sources/COM/COMBinding.swift
Original file line number Diff line number Diff line change
Expand Up @@ -31,15 +31,15 @@ extension COMBinding {
// Default ABIBinding implementation
public static var abiDefaultValue: ABIValue { nil }

public static func toSwift(_ value: ABIValue) -> SwiftValue {
public static func fromABI(_ value: ABIValue) -> SwiftValue {
guard let comPointer = value else { return nil }
return toSwift(ABIReference(addingRef: comPointer))
return fromABI(ABIReference(addingRef: comPointer))
}

public static func toSwift(consuming value: inout ABIValue) -> SwiftValue {
public static func fromABI(consuming value: inout ABIValue) -> SwiftValue {
guard let comPointer = value else { return nil }
value = nil
return toSwift(ABIReference(transferringRef: comPointer))
return fromABI(ABIReference(transferringRef: comPointer))
}

public static func toABI(_ value: SwiftValue) throws -> ABIValue {
Expand All @@ -56,7 +56,7 @@ extension COMBinding {
// Default COMBinding implementation
public static func _unwrap(_ pointer: ABIPointer) -> SwiftObject? { nil }

public static func toSwift(_ reference: consuming ABIReference) -> SwiftObject {
public static func fromABI(_ reference: consuming ABIReference) -> SwiftObject {
if let swiftObject = _unwrap(reference.pointer) { return swiftObject }
return _wrap(consume reference)
}
Expand Down
2 changes: 1 addition & 1 deletion Support/Sources/COM/COMEmbedding.swift
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,7 @@ public enum IUnknownVirtualTable {
ppvObject.pointee = nil

return COMError.toABI {
let id = GUIDBinding.toSwift(iid.pointee)
let id = GUIDBinding.fromABI(iid.pointee)
let this = IUnknownPointer(OpaquePointer(this))
let reference = id == uuidof(SWRT_SwiftCOMObject.self)
? IUnknownReference(addingRef: this)
Expand Down
2 changes: 1 addition & 1 deletion Support/Sources/COM/COMError+createErrorInfo.swift
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ extension COMError {
var createErrorInfo = ICreateErrorInfoBinding.abiDefaultValue
defer { ICreateErrorInfoBinding.release(&createErrorInfo) }
try COMError.fromABI(SWRT_CreateErrorInfo(&createErrorInfo))
return try NullResult.unwrap(ICreateErrorInfoBinding.toSwift(createErrorInfo))
return try NullResult.unwrap(ICreateErrorInfoBinding.fromABI(createErrorInfo))
}

/// Creates an instance of `IErrorInfo` with prepopulated fields.
Expand Down
2 changes: 1 addition & 1 deletion Support/Sources/COM/COMError.swift
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ public struct COMError: COMErrorProtocol, CustomStringConvertible {
var errorInfo: UnsafeMutablePointer<SWRT_IErrorInfo>?
defer { IErrorInfoBinding.release(&errorInfo) }
try fromABI(captureErrorInfo: false, COM_ABI.SWRT_GetErrorInfo(/* dwReserved: */ 0, &errorInfo))
return IErrorInfoBinding.toSwift(consuming: &errorInfo)
return IErrorInfoBinding.fromABI(consuming: &errorInfo)
}

public static func setErrorInfo(_ errorInfo: IErrorInfo?) throws {
Expand Down
2 changes: 1 addition & 1 deletion Support/Sources/COM/Projection/BStrBinding.swift
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ public enum BStrBinding: ABIBinding {

public static var abiDefaultValue: ABIValue { nil }

public static func toSwift(_ value: COM_ABI.SWRT_BStr?) -> String? {
public static func fromABI(_ value: COM_ABI.SWRT_BStr?) -> String? {
guard let value else { return nil }
let length = COM_ABI.SWRT_SysStringLen(value)
return String(utf16CodeUnits: value, count: Int(length))
Expand Down
2 changes: 1 addition & 1 deletion Support/Sources/COM/Projection/GUID.swift
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ public enum GUIDBinding: PODBinding {
.init(Data1: 0, Data2: 0, Data3: 0, Data4: (0, 0, 0, 0, 0, 0, 0, 0))
}

public static func toSwift(_ value: COM_ABI.SWRT_Guid) -> GUID {
public static func fromABI(_ value: COM_ABI.SWRT_Guid) -> GUID {
.init(uuid: (
UInt8((value.Data1 >> 24) & 0xFF), UInt8((value.Data1 >> 16) & 0xFF),
UInt8((value.Data1 >> 8) & 0xFF), UInt8((value.Data1 >> 0) & 0xFF),
Expand Down
2 changes: 1 addition & 1 deletion Support/Sources/COM/Projection/HResultBinding.swift
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,6 @@ public enum HResultBinding: PODBinding {
public typealias ABIValue = COM_ABI.SWRT_HResult

public static var abiDefaultValue: ABIValue { 0 /* S_OK */ }
public static func toSwift(_ value: COM_ABI.SWRT_HResult) -> SwiftValue { HResult(value) }
public static func fromABI(_ value: COM_ABI.SWRT_HResult) -> SwiftValue { HResult(value) }
public static func toABI(_ value: HResult) -> COM_ABI.SWRT_HResult { value.value }
}
8 changes: 4 additions & 4 deletions Support/Sources/COM/Projection/ICreateErrorInfo.swift
Original file line number Diff line number Diff line change
Expand Up @@ -38,11 +38,11 @@ public enum ICreateErrorInfoBinding: COMTwoWayBinding {
Release: { IUnknownVirtualTable.Release($0) },
SetGUID: { this, guid in _implement(this) {
guard let guid else { throw COMError.invalidArg }
try $0.setGUID(GUIDBinding.toSwift(guid.pointee))
try $0.setGUID(GUIDBinding.fromABI(guid.pointee))
} },
SetSource: { this, source in _implement(this) { try $0.setSource(BStrBinding.toSwift(source)) } },
SetDescription: { this, description in _implement(this) { try $0.setDescription(BStrBinding.toSwift(description)) } },
SetHelpFile: { this, helpFile in _implement(this) { try $0.setHelpFile(BStrBinding.toSwift(helpFile)) } },
SetSource: { this, source in _implement(this) { try $0.setSource(BStrBinding.fromABI(source)) } },
SetDescription: { this, description in _implement(this) { try $0.setDescription(BStrBinding.fromABI(description)) } },
SetHelpFile: { this, helpFile in _implement(this) { try $0.setHelpFile(BStrBinding.fromABI(helpFile)) } },
SetHelpContext: { this, helpContext in _implement(this) { try $0.setHelpContext(helpContext) } })
}

Expand Down
8 changes: 4 additions & 4 deletions Support/Sources/COM/Projection/IErrorInfo.swift
Original file line number Diff line number Diff line change
Expand Up @@ -51,25 +51,25 @@ extension COMInterop where ABIStruct == COM_ABI.SWRT_IErrorInfo {
public func getGuid() throws -> GUID {
var value = GUIDBinding.abiDefaultValue
try COMError.fromABI(this.pointee.VirtualTable.pointee.GetGUID(this, &value))
return GUIDBinding.toSwift(value)
return GUIDBinding.fromABI(value)
}

public func getSource() throws -> String? {
var value = BStrBinding.abiDefaultValue
try COMError.fromABI(this.pointee.VirtualTable.pointee.GetSource(this, &value))
return BStrBinding.toSwift(consuming: &value)
return BStrBinding.fromABI(consuming: &value)
}

public func getDescription() throws -> String? {
var value = BStrBinding.abiDefaultValue
try COMError.fromABI(this.pointee.VirtualTable.pointee.GetDescription(this, &value))
return BStrBinding.toSwift(consuming: &value)
return BStrBinding.fromABI(consuming: &value)
}

public func getHelpFile() throws -> String? {
var value = BStrBinding.abiDefaultValue
try COMError.fromABI(this.pointee.VirtualTable.pointee.GetHelpFile(this, &value))
return BStrBinding.toSwift(consuming: &value)
return BStrBinding.fromABI(consuming: &value)
}

public func getHelpContext() throws -> UInt32 {
Expand Down
2 changes: 1 addition & 1 deletion Support/Sources/COM/Projection/IUnknown.swift
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ extension IUnknownProtocol {
/// Queries this object for an additional COM interface described by the given binding.
/// On failure, throws a COMError with an HResult of E_NOINTERFACE.
public func queryInterface<Binding: COMBinding>(_: Binding.Type) throws -> Binding.SwiftObject {
Binding.toSwift(try self._queryInterface(Binding.self))
Binding.fromABI(try self._queryInterface(Binding.self))
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ extension ActivatableClassBinding {
}

extension ComposableClassBinding {
public static func toSwift(consuming value: inout ABIValue) -> SwiftValue {
public static func fromABI(consuming value: inout ABIValue) -> SwiftValue {
guard let pointer = value else { return nil }
let reference = COMReference(transferringRef: pointer)
if let swiftObject = _unwrap(reference.pointer) { return swiftObject }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ public enum IReferenceToOptionalBinding<Binding: IReferenceableBinding>: WinRTBi
withUnsafeMutablePointer(to: &abiValue) { abiValuePointer in
try! reference.interop.get_Value(abiValuePointer)
}
return Binding.toSwift(consuming: &abiValue)
return Binding.fromABI(consuming: &abiValue)
}

public static func toCOM(_ value: SwiftObject) throws -> ABIReference {
Expand Down
8 changes: 4 additions & 4 deletions Support/Sources/WindowsRuntime/Projection/ArrayBinding.swift
Original file line number Diff line number Diff line change
Expand Up @@ -8,19 +8,19 @@ public enum ArrayBinding<ElementBinding: ABIBinding>: ABIBinding {

public static var abiDefaultValue: ABIValue { .null }

public static func toSwift(_ value: ABIValue) -> SwiftValue {
public static func fromABI(_ value: ABIValue) -> SwiftValue {
guard value.count > 0 else { return [] }
return .init(unsafeUninitializedCapacity: Int(value.count)) { buffer, initializedCount in
for i in 0..<Int(value.count) {
buffer.initializeElement(at: i, to: ElementBinding.toSwift(value[i]))
buffer.initializeElement(at: i, to: ElementBinding.fromABI(value[i]))
initializedCount = i + 1
}
}
}

public static func toSwift(pointer: UnsafeMutablePointer<ElementBinding.ABIValue>?, count: UInt32) -> SwiftValue {
public static func fromABI(pointer: UnsafeMutablePointer<ElementBinding.ABIValue>?, count: UInt32) -> SwiftValue {
if let pointer {
return toSwift(COMArray(pointer: pointer, count: count))
return fromABI(COMArray(pointer: pointer, count: count))
} else {
assert(count == 0)
return []
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,6 @@ extension EventRegistrationToken: PODBinding {
public typealias ABIValue = WindowsRuntime_ABI.SWRT_EventRegistrationToken

public static var abiDefaultValue: ABIValue { WindowsRuntime_ABI.SWRT_EventRegistrationToken(value: 0) }
public static func toSwift(_ value: ABIValue) -> SwiftValue { SwiftValue(value.value) }
public static func fromABI(_ value: ABIValue) -> SwiftValue { SwiftValue(value.value) }
public static func toABI(_ value: SwiftValue) -> ABIValue { ABIValue(value: value.value) }
}
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ public enum IActivationFactoryBinding: InterfaceBinding {
private final class Import: WinRTImport<IActivationFactoryBinding>, IActivationFactoryProtocol {
public func activateInstance() throws -> IInspectable {
var instancePointer = try _interop.activateInstance()
return try NullResult.unwrap(IInspectableBinding.toSwift(consuming: &instancePointer))
return try NullResult.unwrap(IInspectableBinding.fromABI(consuming: &instancePointer))
}
}
}
Expand Down
6 changes: 3 additions & 3 deletions Support/Sources/WindowsRuntime/Projection/IInspectable.swift
Original file line number Diff line number Diff line change
Expand Up @@ -48,18 +48,18 @@ extension COMInterop where ABIStruct == WindowsRuntime_ABI.SWRT_IInspectable {
var iids: COMArray<WindowsRuntime_ABI.SWRT_Guid> = .null
try WinRTError.fromABI(this.pointee.VirtualTable.pointee.GetIids(this, &iids.count, &iids.pointer))
defer { iids.deallocate() }
return ArrayBinding<GUIDBinding>.toSwift(consuming: &iids)
return ArrayBinding<GUIDBinding>.fromABI(consuming: &iids)
}

public func getRuntimeClassName() throws -> String {
var runtimeClassName: WindowsRuntime_ABI.SWRT_HString?
try WinRTError.fromABI(this.pointee.VirtualTable.pointee.GetRuntimeClassName(this, &runtimeClassName))
return StringBinding.toSwift(consuming: &runtimeClassName)
return StringBinding.fromABI(consuming: &runtimeClassName)
}

public func getTrustLevel() throws -> TrustLevel {
var trustLevel: WindowsRuntime_ABI.SWRT_TrustLevel = 0
try WinRTError.fromABI(this.pointee.VirtualTable.pointee.GetTrustLevel(this, &trustLevel))
return TrustLevel.toSwift(trustLevel)
return TrustLevel.fromABI(trustLevel)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,6 @@ extension COMInterop where ABIStruct == WindowsRuntime_ABI.SWRT_ILanguageExcepti
var result: IUnknownPointer? = nil // IUnknownBinding.abiDefaultValue (compiler bug?)
defer { IUnknownBinding.release(&result) }
try COMError.fromABI(this.pointee.VirtualTable.pointee.GetLanguageException(this, &result))
return IUnknownBinding.toSwift(consuming: &result)
return IUnknownBinding.fromABI(consuming: &result)
}
}
Loading
Loading