mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
172 lines
6.4 KiB
C++
172 lines
6.4 KiB
C++
//===--- 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
|