Files
swift-mirror/include/swift/AST/Ownership.h
2018-03-08 12:36:24 +11:00

59 lines
1.7 KiB
C++

//===--- Ownership.h - Swift ASTs for Ownership ---------------*- 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
//
//===----------------------------------------------------------------------===//
//
// This file defines common structures for working with the different kinds of
// reference ownership supported by Swift, such as 'weak' and 'unowned', as well
// as the different kinds of value ownership, such as 'inout' and '__shared'.
//
//===----------------------------------------------------------------------===//
#ifndef SWIFT_OWNERSHIP_H
#define SWIFT_OWNERSHIP_H
#include <stdint.h>
namespace swift {
/// Different kinds of reference ownership supported by Swift.
// This enum is used in diagnostics. If you add a case here, the diagnostics
// must be updated as well.
enum class ReferenceOwnership : uint8_t {
/// \brief a strong reference (the default semantics)
Strong,
/// \brief a 'weak' reference
Weak,
/// \brief an 'unowned' reference
Unowned,
/// \brief an 'unowned(unsafe)' reference
Unmanaged,
};
/// Different kinds of value ownership supported by Swift.
enum class ValueOwnership : uint8_t {
/// \brief the context-dependent default ownership (sometimes shared,
/// sometimes owned)
Default,
/// \brief an 'inout' mutating pointer-like value
InOut,
/// \brief a '__shared' non-mutating pointer-like value
Shared,
/// \brief an '__owned' value
Owned
};
} // end namespace swift
#endif