Files
swift-mirror/stdlib/public/SwiftShims/swift/shims/GlobalObjects.h
Egor Zhdan 84a1ffcb33 [Shims] Include SwiftShims headers without ../
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).
2022-09-14 11:14:50 +01:00

115 lines
2.8 KiB
C++

//===--- GlobalObjects.h - Statically-initialized 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
//
//===----------------------------------------------------------------------===//
//
// Objects that are allocated at global scope instead of on the heap,
// and statically initialized to avoid synchronization costs, are
// defined here.
//
//===----------------------------------------------------------------------===//
#ifndef SWIFT_STDLIB_SHIMS_GLOBALOBJECTS_H_
#define SWIFT_STDLIB_SHIMS_GLOBALOBJECTS_H_
#include "SwiftStdint.h"
#include "SwiftStdbool.h"
#include "HeapObject.h"
#include "Visibility.h"
#ifdef __cplusplus
#ifndef __swift__
namespace swift {
#endif
extern "C" {
#endif
struct _SwiftArrayBodyStorage {
__swift_intptr_t count;
__swift_uintptr_t _capacityAndFlags;
};
struct _SwiftEmptyArrayStorage {
struct HeapObject header;
struct _SwiftArrayBodyStorage body;
};
SWIFT_RUNTIME_STDLIB_API
struct _SwiftEmptyArrayStorage _swiftEmptyArrayStorage;
struct _SwiftDictionaryBodyStorage {
__swift_intptr_t count;
__swift_intptr_t capacity;
__swift_int8_t scale;
__swift_int8_t reservedScale;
__swift_int16_t extra;
__swift_int32_t age;
__swift_intptr_t seed;
void *rawKeys;
void *rawValues;
};
struct _SwiftSetBodyStorage {
__swift_intptr_t count;
__swift_intptr_t capacity;
__swift_int8_t scale;
__swift_int8_t reservedScale;
__swift_int16_t extra;
__swift_int32_t age;
__swift_intptr_t seed;
void *rawElements;
};
struct _SwiftEmptyDictionarySingleton {
struct HeapObject header;
struct _SwiftDictionaryBodyStorage body;
__swift_uintptr_t metadata;
};
struct _SwiftEmptySetSingleton {
struct HeapObject header;
struct _SwiftSetBodyStorage body;
__swift_uintptr_t metadata;
};
SWIFT_RUNTIME_STDLIB_API
struct _SwiftEmptyDictionarySingleton _swiftEmptyDictionarySingleton;
SWIFT_RUNTIME_STDLIB_API
struct _SwiftEmptySetSingleton _swiftEmptySetSingleton;
struct _SwiftHashingParameters {
__swift_uint64_t seed0;
__swift_uint64_t seed1;
__swift_bool deterministic;
};
SWIFT_RUNTIME_STDLIB_API
struct _SwiftHashingParameters _swift_stdlib_Hashing_parameters;
#ifdef __cplusplus
static_assert(
sizeof(_SwiftDictionaryBodyStorage) ==
5 * sizeof(__swift_intptr_t) + sizeof(__swift_int64_t),
"_SwiftDictionaryBodyStorage has unexpected size");
static_assert(
sizeof(_SwiftSetBodyStorage) ==
4 * sizeof(__swift_intptr_t) + sizeof(__swift_int64_t),
"_SwiftSetBodyStorage has unexpected size");
} // extern "C"
#ifndef __swift__
} // namespace swift
#endif
#endif
#endif