//===--- CompatibilityOverrides.def - Compatibility Overrides Database -*- C++ -*-===// // // 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 // //===----------------------------------------------------------------------===// // // This file defines x-macros used for metaprogramming with the set of // compatibility override functions. // //===----------------------------------------------------------------------===// /// #define OVERRIDE(name, ret, attrs, namespace, typedArgs, namedArgs) /// Provides information about an overridable function. /// - name is the name of the function, without any leading swift_ or namespace. /// - ret is the return type of the function. /// - attrs is the attributes, if any, applied to the function definition. /// - namespace is the namespace, if any, the function is in, including a trailing :: /// - typedArgs is the argument list, including types, surrounded by parentheses /// - namedArgs is the list of argument names, with no types, surrounded by parentheses /// /// The entries are organized by group. A user may define OVERRIDE to get all entries, /// or define one or more of OVERRIDE_METADATALOOKUP, OVERRIDE_CASTING, OVERRIDE_OBJC, /// OVERRIDE_FOREIGN, or OVERRIDE_PROTOCOLCONFORMANCE to get only those entries. // NOTE: this file is used to build the definition of OverrideSection in // CompatibilityOverride.cpp, which is part of the ABI. Do not move or remove entries // in this file after ABI stability. Additional entries can be added to the end. #ifdef OVERRIDE # define OVERRIDE_METADATALOOKUP OVERRIDE # define OVERRIDE_CASTING OVERRIDE # define OVERRIDE_OBJC OVERRIDE # define OVERRIDE_FOREIGN OVERRIDE # define OVERRIDE_PROTOCOLCONFORMANCE OVERRIDE #else # ifndef OVERRIDE_METADATALOOKUP # define OVERRIDE_METADATALOOKUP(...) # endif # ifndef OVERRIDE_CASTING # define OVERRIDE_CASTING(...) # endif # ifndef OVERRIDE_OBJC # define OVERRIDE_OBJC(...) # endif # ifndef OVERRIDE_FOREIGN # define OVERRIDE_FOREIGN(...) # endif # ifndef OVERRIDE_PROTOCOLCONFORMANCE # define OVERRIDE_PROTOCOLCONFORMANCE(...) # endif #endif OVERRIDE_METADATALOOKUP(getTypeByMangledName, const Metadata *, SWIFT_CC(swift) SWIFT_RUNTIME_STDLIB_INTERNAL, , (const char *typeNameStart, size_t typeNameLength, size_t numberOfLevels, size_t *parametersPerLevel, const Metadata * const *flatSubstitutions), (typeNameStart, typeNameLength, numberOfLevels, parametersPerLevel, flatSubstitutions)) OVERRIDE_CASTING(dynamicCast, bool, , swift::, (OpaqueValue *dest, OpaqueValue *src, const Metadata *srcType, const Metadata *targetType, DynamicCastFlags flags), (dest, src, srcType, targetType, flags)) OVERRIDE_CASTING(dynamicCastClass, const void *, , swift::, (const void *object, const ClassMetadata *targetType), (object, targetType)) OVERRIDE_CASTING(dynamicCastClassUnconditional, const void *, , swift::, (const void *object, const ClassMetadata *targetType), (object, targetType)) OVERRIDE_CASTING(dynamicCastUnknownClass, const void *, , swift::, (const void *object, const Metadata *targetType), (object, targetType)) OVERRIDE_CASTING(dynamicCastUnknownClassUnconditional, const void *, , swift::, (const void *object, const Metadata *targetType), (object, targetType)) OVERRIDE_CASTING(dynamicCastMetatype, const Metadata *, , swift::, (const Metadata *sourceType, const Metadata *targetType), (sourceType, targetType)) OVERRIDE_CASTING(dynamicCastMetatypeUnconditional, const Metadata *, , swift::, (const Metadata *sourceType, const Metadata *targetType), (sourceType, targetType)) OVERRIDE_FOREIGN(dynamicCastForeignClassMetatype, const ClassMetadata *, , swift::, (const ClassMetadata *sourceType, const ClassMetadata *targetType), (sourceType, targetType)) OVERRIDE_FOREIGN(dynamicCastForeignClassMetatypeUnconditional, const ClassMetadata *, , swift::, (const ClassMetadata *sourceType, const ClassMetadata *targetType), (sourceType, targetType)) OVERRIDE_PROTOCOLCONFORMANCE(conformsToProtocol, const WitnessTable *, , swift::, (const Metadata * const type, const ProtocolDescriptor *protocol), (type, protocol)) #if SWIFT_OBJC_INTEROP OVERRIDE_OBJC(dynamicCastObjCClass, const void *, , swift::, (const void *object, const ClassMetadata *targetType), (object, targetType)) OVERRIDE_OBJC(dynamicCastObjCClassUnconditional, const void *, , swift::, (const void *object, const ClassMetadata *targetType), (object, targetType)) OVERRIDE_OBJC(dynamicCastObjCClassMetatype, const ClassMetadata *, , swift::, (const ClassMetadata *sourceType, const ClassMetadata *targetType), (sourceType, targetType)) OVERRIDE_OBJC(dynamicCastObjCClassMetatypeUnconditional, const ClassMetadata *, , swift::, (const ClassMetadata *sourceType, const ClassMetadata *targetType), (sourceType, targetType)) OVERRIDE_FOREIGN(dynamicCastForeignClass, const void *, , swift::, (const void *object, const ForeignClassMetadata *targetType), (object, targetType)) OVERRIDE_FOREIGN(dynamicCastForeignClassUnconditional, const void *, , swift::, (const void *object, const ForeignClassMetadata *targetType), (object, targetType)) #endif #undef OVERRIDE #undef OVERRIDE_METADATALOOKUP #undef OVERRIDE_CASTING #undef OVERRIDE_OBJC #undef OVERRIDE_FOREIGN #undef OVERRIDE_PROTOCOLCONFORMANCE