mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
This replaces a number of `#include`-s like this:
```
#include "../../../stdlib/public/SwiftShims/Visibility.h"
```
with this:
```
#include "swift/shims/Visibility.h"
```
This is needed to allow SwiftCompilerSources to use C++ headers which include SwiftShims headers. Currently trying to do that results in errors:
```
swift/swift/include/swift/Demangling/../../../stdlib/public/SwiftShims/module.modulemap:1:8: error: redefinition of module 'SwiftShims'
module SwiftShims {
^
Builds.noindex/swift/swift/bootstrapping0/lib/swift/shims/module.modulemap:1:8: note: previously defined here
module SwiftShims {
^
```
This happens because the headers in both the source dir and the build dir refer to SwiftShims headers by relative path, and both the source root and the build root contain SwiftShims headers (which are equivalent, but since they are located in different dirs, Clang treats them as different modules).
141 lines
5.3 KiB
C++
141 lines
5.3 KiB
C++
//===--- KeyPath.h - ABI constants for key path objects ---------*- 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
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
//
|
|
// Constants used in the layout of key path objects.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef SWIFT_STDLIB_SHIMS_KEYPATH_H
|
|
#define SWIFT_STDLIB_SHIMS_KEYPATH_H
|
|
|
|
#include "SwiftStdint.h"
|
|
|
|
#ifdef __cplusplus
|
|
namespace swift {
|
|
extern "C" {
|
|
#endif
|
|
|
|
// Bitfields for the key path buffer header.
|
|
|
|
static const __swift_uint32_t _SwiftKeyPathBufferHeader_SizeMask
|
|
= 0x00FFFFFFU;
|
|
static const __swift_uint32_t _SwiftKeyPathBufferHeader_TrivialFlag
|
|
= 0x80000000U;
|
|
static const __swift_uint32_t _SwiftKeyPathBufferHeader_HasReferencePrefixFlag
|
|
= 0x40000000U;
|
|
static const __swift_uint32_t _SwiftKeyPathBufferHeader_ReservedMask
|
|
= 0x3F000000U;
|
|
|
|
// Bitfields for a key path component header.
|
|
|
|
static const __swift_uint32_t _SwiftKeyPathComponentHeader_PayloadMask
|
|
= 0x00FFFFFFU;
|
|
|
|
static const __swift_uint32_t _SwiftKeyPathComponentHeader_DiscriminatorMask
|
|
= 0x7F000000U;
|
|
static const __swift_uint32_t _SwiftKeyPathComponentHeader_DiscriminatorShift
|
|
= 24;
|
|
|
|
static const __swift_uint32_t _SwiftKeyPathComponentHeader_StructTag
|
|
= 1;
|
|
static const __swift_uint32_t _SwiftKeyPathComponentHeader_ComputedTag
|
|
= 2;
|
|
static const __swift_uint32_t _SwiftKeyPathComponentHeader_ClassTag
|
|
= 3;
|
|
static const __swift_uint32_t _SwiftKeyPathComponentHeader_OptionalTag
|
|
= 4;
|
|
static const __swift_uint32_t _SwiftKeyPathComponentHeader_ExternalTag
|
|
= 0;
|
|
|
|
static const __swift_uint32_t
|
|
_SwiftKeyPathComponentHeader_TrivialPropertyDescriptorMarker = 0U;
|
|
|
|
static const __swift_uint32_t _SwiftKeyPathComponentHeader_StoredOffsetPayloadMask
|
|
= 0x007FFFFFU;
|
|
|
|
static const __swift_uint32_t _SwiftKeyPathComponentHeader_MaximumOffsetPayload
|
|
= 0x007FFFFCU;
|
|
|
|
static const __swift_uint32_t _SwiftKeyPathComponentHeader_UnresolvedIndirectOffsetPayload
|
|
= 0x007FFFFDU;
|
|
|
|
static const __swift_uint32_t _SwiftKeyPathComponentHeader_UnresolvedFieldOffsetPayload
|
|
= 0x007FFFFEU;
|
|
|
|
static const __swift_uint32_t _SwiftKeyPathComponentHeader_OutOfLineOffsetPayload
|
|
= 0x007FFFFFU;
|
|
|
|
static const __swift_uint32_t _SwiftKeyPathComponentHeader_StoredMutableFlag
|
|
= 0x00800000U;
|
|
|
|
static const __swift_uint32_t _SwiftKeyPathComponentHeader_OptionalChainPayload
|
|
= 0;
|
|
static const __swift_uint32_t _SwiftKeyPathComponentHeader_OptionalWrapPayload
|
|
= 1;
|
|
static const __swift_uint32_t _SwiftKeyPathComponentHeader_OptionalForcePayload
|
|
= 2;
|
|
|
|
static const __swift_uint32_t _SwiftKeyPathComponentHeader_EndOfReferencePrefixFlag
|
|
= 0x80000000U;
|
|
|
|
static const __swift_uint32_t _SwiftKeyPathComponentHeader_ComputedMutatingFlag
|
|
= 0x00800000U;
|
|
static const __swift_uint32_t _SwiftKeyPathComponentHeader_ComputedSettableFlag
|
|
= 0x00400000U;
|
|
static const __swift_uint32_t _SwiftKeyPathComponentHeader_ComputedIDByStoredPropertyFlag
|
|
= 0x00200000U;
|
|
static const __swift_uint32_t _SwiftKeyPathComponentHeader_ComputedIDByVTableOffsetFlag
|
|
= 0x00100000U;
|
|
static const __swift_uint32_t _SwiftKeyPathComponentHeader_ComputedHasArgumentsFlag
|
|
= 0x00080000U;
|
|
// Not ABI, used internally by key path runtime implementation
|
|
static const __swift_uint32_t _SwiftKeyPathComponentHeader_ComputedInstantiatedFromExternalWithArgumentsFlag
|
|
= 0x00000010U;
|
|
static const __swift_uint32_t _SwiftKeyPathComponentHeader_ComputedIDResolutionMask
|
|
= 0x0000000FU;
|
|
static const __swift_uint32_t _SwiftKeyPathComponentHeader_ComputedIDResolved
|
|
= 0x00000000U;
|
|
static const __swift_uint32_t _SwiftKeyPathComponentHeader_ComputedIDResolvedAbsolute
|
|
= 0x00000003U;
|
|
static const __swift_uint32_t _SwiftKeyPathComponentHeader_ComputedIDUnresolvedIndirectPointer
|
|
= 0x00000002U;
|
|
static const __swift_uint32_t _SwiftKeyPathComponentHeader_ComputedIDUnresolvedFunctionCall
|
|
= 0x00000001U;
|
|
|
|
#ifndef __cplusplus
|
|
extern const void *_Nonnull (swift_keyPathGenericWitnessTable[]);
|
|
|
|
static inline const void *_Nonnull __swift_keyPathGenericWitnessTable_addr(void) {
|
|
return swift_keyPathGenericWitnessTable;
|
|
}
|
|
#endif
|
|
|
|
// Discriminators for pointer authentication in key path patterns and objects
|
|
|
|
static const __swift_uint16_t _SwiftKeyPath_ptrauth_ArgumentDestroy = 0x7072;
|
|
static const __swift_uint16_t _SwiftKeyPath_ptrauth_ArgumentCopy = 0x6f66;
|
|
static const __swift_uint16_t _SwiftKeyPath_ptrauth_ArgumentEquals = 0x756e;
|
|
static const __swift_uint16_t _SwiftKeyPath_ptrauth_ArgumentHash = 0x6374;
|
|
static const __swift_uint16_t _SwiftKeyPath_ptrauth_Getter = 0x6f72;
|
|
static const __swift_uint16_t _SwiftKeyPath_ptrauth_NonmutatingSetter = 0x6f70;
|
|
static const __swift_uint16_t _SwiftKeyPath_ptrauth_MutatingSetter = 0x7469;
|
|
static const __swift_uint16_t _SwiftKeyPath_ptrauth_ArgumentLayout = 0x6373;
|
|
static const __swift_uint16_t _SwiftKeyPath_ptrauth_ArgumentInit = 0x6275;
|
|
static const __swift_uint16_t _SwiftKeyPath_ptrauth_MetadataAccessor = 0x7474;
|
|
|
|
#ifdef __cplusplus
|
|
} // extern "C"
|
|
} // namespace swift
|
|
#endif
|
|
|
|
#endif // SWIFT_STDLIB_SHIMS_KEYPATH_H
|