| //===--- 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, OVERRIDE_PROTOCOLCONFORMANCE, |
| /// and OVERRIDE_KEYPATH 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 |
| # define OVERRIDE_KEYPATH OVERRIDE |
| # define OVERRIDE_WITNESSTABLE 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 |
| # ifndef OVERRIDE_KEYPATH |
| # define OVERRIDE_KEYPATH(...) |
| # endif |
| # ifndef OVERRIDE_WITNESSTABLE |
| # define OVERRIDE_WITNESSTABLE(...) |
| # endif |
| #endif |
| |
| 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)) |
| |
| OVERRIDE_KEYPATH(getKeyPath, const HeapObject *, , swift::, |
| (const void *pattern, const void *arguments), |
| (pattern, arguments)) |
| |
| OVERRIDE_METADATALOOKUP(getTypeByMangledNode, TypeInfo, , swift::, |
| (Demangler &demangler, |
| Demangle::NodePointer node, |
| SubstGenericParameterFn substGenericParam, |
| SubstDependentWitnessTableFn substWitnessTable), |
| (demangler, node, substGenericParam, substWitnessTable)) |
| OVERRIDE_METADATALOOKUP(getTypeByMangledName, TypeInfo, , swift::, |
| (StringRef typeName, |
| SubstGenericParameterFn substGenericParam, |
| SubstDependentWitnessTableFn substWitnessTable), |
| (typeName, substGenericParam, substWitnessTable)) |
| |
| OVERRIDE_WITNESSTABLE(getAssociatedTypeWitnessSlow, MetadataResponse, |
| SWIFT_CC(swift) SWIFT_RUNTIME_STDLIB_INTERNAL, swift::, |
| (MetadataRequest request, WitnessTable *wtable, |
| const Metadata *conformingType, |
| const ProtocolRequirement *reqBase, |
| const ProtocolRequirement *assocType), |
| (request, wtable, conformingType, reqBase, assocType)) |
| |
| OVERRIDE_WITNESSTABLE(getAssociatedConformanceWitnessSlow, const WitnessTable *, |
| SWIFT_CC(swift) SWIFT_RUNTIME_STDLIB_INTERNAL, swift::, |
| (WitnessTable *wtable, const Metadata *conformingType, |
| const Metadata *assocType, |
| const ProtocolRequirement *reqBase, |
| const ProtocolRequirement *assocConformance), |
| (wtable, conformingType, assocType, reqBase, |
| assocConformance)) |
| #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 |
| #undef OVERRIDE_KEYPATH |
| #undef OVERRIDE_WITNESSTABLE |