//===--- BridgedTypes.def - SIL-Bridged Type Mappings -----------*- C++ -*-===//
//
// This source file is part of the Swift.org open source project
//
// Copyright (c) 2014 - 2017 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
//
//===----------------------------------------------------------------------===//
//
// This file defines the database of C and Objective-C types that require
// implicit conversions to bridge to native Swift types.
//
// BRIDGING_KNOWN_TYPE(MODULE, TYPE)
//  - MODULE is the name of the module into which the type is imported.
//  - TYPE is the name of the type.
//
// BRIDGE_TYPE(BRIDGED_MODULE, BRIDGED_TYPE,
//             NATIVE_MODULE, NATIVE_TYPE,
//             OPTIONAL_IS_BRIDGED)
//  - BRIDGED_MODULE is the name of the module into which the foreign type
//    is imported.
//  - BRIDGED_TYPE is the name of the foreign type.
//  - NATIVE_MODULE is the name of the module containing the native Swift type.
//  - NATIVE_TYPE is the name of the native Swift type.
//  - OPTIONAL_IS_BRIDGED is true or false depending on whether Native?
//    is also bridged to Bridged?.
//
//===----------------------------------------------------------------------===//

#ifndef BRIDGING_KNOWN_TYPE
#define BRIDGING_KNOWN_TYPE(module, type)
#endif

#ifndef BRIDGE_TYPE
#define BRIDGE_TYPE(bmodule, btype, nmodule, ntype, opt)
#endif

BRIDGING_KNOWN_TYPE(Foundation, NSString)
BRIDGING_KNOWN_TYPE(Foundation, NSArray)
BRIDGING_KNOWN_TYPE(Foundation, NSDictionary)
BRIDGING_KNOWN_TYPE(Foundation, NSSet)
BRIDGING_KNOWN_TYPE(Foundation, NSError)
BRIDGING_KNOWN_TYPE(Swift, String)
BRIDGING_KNOWN_TYPE(ObjectiveC, ObjCBool)
BRIDGING_KNOWN_TYPE(ObjectiveC, Selector)
BRIDGING_KNOWN_TYPE(Darwin, DarwinBoolean)
BRIDGING_KNOWN_TYPE(Swift, Bool)
BRIDGING_KNOWN_TYPE(Swift, Error)

BRIDGE_TYPE(ObjectiveC, ObjCBool, Swift, Bool, false)
BRIDGE_TYPE(Darwin, DarwinBoolean, Swift, Bool, false)

BRIDGING_KNOWN_TYPE(WinSDK, WindowsBool)
BRIDGE_TYPE(WinSDK, WindowsBool, Swift, Bool, false)

#undef BRIDGING_KNOWN_TYPE
#undef BRIDGE_TYPE

