| //===----------------------------------------------------------------------===// |
| // |
| // This source file is part of the Swift.org open source project |
| // |
| // Copyright (c) 2014 - 2018 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 |
| // |
| //===----------------------------------------------------------------------===// |
| |
| #include "NSError.h" |
| |
| #include "swift/Demangling/ManglingMacros.h" |
| |
| using namespace swift; |
| |
| // Declare the mangled Swift symbols that we'll be putting in the bridging info. |
| extern "C" const SWIFT_CC(swift) WitnessTable * |
| MANGLE_SYM(So10CFErrorRefas5Error10FoundationWa)(); |
| |
| extern "C" const SWIFT_CC(swift) hashable_support::HashableWitnessTable * |
| MANGLE_SYM(So8NSObjectCSH10ObjectiveCWa)(); |
| |
| extern "C" SWIFT_CC(swift) |
| NSDictionary *MANGLE_SYM(10Foundation24_getErrorDefaultUserInfoyyXlSgxs0C0RzlF)( |
| const OpaqueValue *error, const Metadata *T, const WitnessTable *Error); |
| |
| extern "C" SWIFT_CC(swift) bool |
| MANGLE_SYM(10Foundation21_bridgeNSErrorToError_3outSbSo0C0C_SpyxGtAA021_ObjectiveCBridgeableE0RzlF)( |
| NSError *, OpaqueValue*, const Metadata *, const WitnessTable *); |
| |
| extern "C" const ProtocolDescriptor |
| MANGLE_SYM(10Foundation26_ObjectiveCBridgeableErrorMp); |
| |
| // Define the bridging info struct. |
| extern "C" ErrorBridgingInfo ERROR_BRIDGING_SYMBOL_NAME = { |
| MANGLE_SYM(So10CFErrorRefas5Error10FoundationWa), |
| MANGLE_SYM(So8NSObjectCSH10ObjectiveCWa), |
| MANGLE_SYM(10Foundation24_getErrorDefaultUserInfoyyXlSgxs0C0RzlF), |
| MANGLE_SYM(10Foundation21_bridgeNSErrorToError_3outSbSo0C0C_SpyxGtAA021_ObjectiveCBridgeableE0RzlF), |
| &MANGLE_SYM(10Foundation26_ObjectiveCBridgeableErrorMp) |
| }; |
| |
| // This directive ensures that the symbol is preserved even when statically |
| // linked into an executable and stripped, so that the dlsym lookup from |
| // ErrorObject.mm still works. |
| asm(".desc _" ERROR_BRIDGING_SYMBOL_NAME_STRING ", 0x10"); |