//===--- MetadataKind.def ---------------------------------------*- 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 is a file that enables metaprogramming with metadata kinds.
//
//===----------------------------------------------------------------------===//

/// METADATAKIND(Name, Value)
///   Represents a swift native runtime metadata kind. Name is the Name of the
///   metadata kind and Value is the integral value used to identify the value.
#ifndef METADATAKIND
#define METADATAKIND(Name, Value)
#endif

/// ABSTRACTMETADATAKIND(Name, Start, End)
///   Represents an abstraction categorization of a range of metadata kind
///   values. Name is the identifier of the range and Start, End are the
///   beginning and end of the range.
#ifndef ABSTRACTMETADATAKIND
#define ABSTRACTMETADATAKIND(Name, Start, End)
#endif

/// NOMINALTYPEMETADATAKIND(Name, Value)
///   Represents the native metadata kind for a swift nominal type. Name is the
///   name of the kind and Value is the integral value used to identify the
///   value. Delegates to METADATAKIND if not defined.
#ifndef NOMINALTYPEMETADATAKIND
#define NOMINALTYPEMETADATAKIND(Name, Value) METADATAKIND(Name, Value)
#endif

/// A class type.
NOMINALTYPEMETADATAKIND(Class, 0)

/// A struct type.
NOMINALTYPEMETADATAKIND(Struct, 1)

/// An enum type.
/// If we add reference enums, that needs to go here.
NOMINALTYPEMETADATAKIND(Enum, 2)

/// An optional type.
NOMINALTYPEMETADATAKIND(Optional, 3)

/// A type whose value is not exposed in the metadata system.
METADATAKIND(Opaque, 8)

/// A tuple.
METADATAKIND(Tuple, 9)

/// A monomorphic function.
METADATAKIND(Function, 10)

/// An existential type.
METADATAKIND(Existential, 12)

/// A metatype.
METADATAKIND(Metatype, 13)

/// An ObjC class wrapper.
METADATAKIND(ObjCClassWrapper, 14)

/// An existential metatype.
METADATAKIND(ExistentialMetatype, 15)

/// A foreign class, such as a Core Foundation class.
METADATAKIND(ForeignClass, 16)

/// A heap-allocated local variable using statically-generated metadata.
METADATAKIND(HeapLocalVariable, 64)

/// A heap-allocated local variable using runtime-instantiated metadata.
METADATAKIND(HeapGenericLocalVariable, 65)

/// A native error object.
METADATAKIND(ErrorObject, 128)

// getEnumeratedMetadataKind assumes that all the enumerated values here
// will be <= LastEnumeratedMetadataKind.

#undef ABSTRACTMETADATAKIND
#undef NOMINALTYPEMETADATAKIND
#undef METADATAKIND
