//===-- DeclTypeRecordNodes.def - Serialization Metaprogramming -*- 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
//
//===----------------------------------------------------------------------===//
//
/// \file
/// \brief Defines macros used for metaprogramming with the serialized records
/// in the "decls-and-types" block of serialized ASTs.
///
/// You should define one of the following sets of macros:
/// - RECORD(Id)
/// - RECORD(Id) and RECORD_VAL(Id)
/// - Any of TYPE(Id), DECL(Id), PATTERN(Id)
//
//===----------------------------------------------------------------------===//

#ifndef RECORD
#define RECORD(Id)
#endif

#ifdef RECORD_VAL
#define DECLTYPERECORDNODES_HAS_RECORD_VAL 1
#else
#define DECLTYPERECORDNODES_HAS_RECORD_VAL 0
#define RECORD_VAL(Id, Value) RECORD(Id)
#endif

#ifndef TYPE
#define TYPE(Id) RECORD(Id##_TYPE)
#endif

#ifndef FIRST_TYPE
# if DECLTYPERECORDNODES_HAS_RECORD_VAL
#  define FIRST_TYPE(Id, Value) RECORD_VAL(Id##_TYPE, Value)
# else
#  define FIRST_TYPE(Id, Value) TYPE(Id)
# endif
#endif

#ifndef DECL
#define DECL(Id) RECORD(Id##_DECL)
#endif

#ifndef FIRST_DECL
# if DECLTYPERECORDNODES_HAS_RECORD_VAL
#  define FIRST_DECL(Id, Value) RECORD_VAL(Id##_DECL, Value)
# else
#  define FIRST_DECL(Id, Value) DECL(Id)
# endif
#endif

#ifndef PATTERN
#define PATTERN(Id) RECORD(Id##_PATTERN)
#endif

#ifndef FIRST_PATTERN
# if DECLTYPERECORDNODES_HAS_RECORD_VAL
#  define FIRST_PATTERN(Id, Value) RECORD_VAL(Id##_PATTERN, Value)
# else
#  define FIRST_PATTERN(Id, Value) PATTERN(Id)
# endif
#endif

#ifndef TRAILING_INFO
#define TRAILING_INFO(Id) RECORD(Id)
#endif

#ifndef OTHER
#define OTHER(Id, Value) RECORD_VAL(Id, Value)
#endif

// These IDs must \em not be renumbered or reordered without incrementing
// VERSION_MAJOR in ModuleFormat.h. Names, however, may change.
FIRST_TYPE(NAME_ALIAS, 1)
TYPE(GENERIC_TYPE_PARAM)
TYPE(DEPENDENT_MEMBER)
TYPE(NOMINAL)
TYPE(PAREN)
TYPE(TUPLE)
TRAILING_INFO(TUPLE_TYPE_ELT)
TYPE(FUNCTION)
TYPE(METATYPE)
TYPE(LVALUE_unused)
TYPE(INOUT)
TYPE(ARCHETYPE)
TYPE(PROTOCOL_COMPOSITION)
TYPE(BOUND_GENERIC)
TRAILING_INFO(BOUND_GENERIC_SUBSTITUTION)
TYPE(GENERIC_FUNCTION)
TYPE(ARRAY_SLICE)
TYPE(DICTIONARY)
TYPE(REFERENCE_STORAGE)
TYPE(UNBOUND_GENERIC)
TYPE(OPTIONAL)
TYPE(SIL_FUNCTION)
TYPE(UNCHECKED_OPTIONAL)
TYPE(DYNAMIC_SELF)
TYPE(OPENED_EXISTENTIAL)
TYPE(EXISTENTIAL_METATYPE)
TYPE(SIL_BLOCK_STORAGE)
TYPE(SIL_BOX)

FIRST_DECL(TYPE_ALIAS, 60)
DECL(GENERIC_TYPE_PARAM)
DECL(ASSOCIATED_TYPE)
DECL(STRUCT)
DECL(CONSTRUCTOR)
DECL(VAR)
DECL(PARAM)
DECL(FUNC)
DECL(PATTERN_BINDING)
DECL(PROTOCOL)
TRAILING_INFO(DEFAULT_WITNESS_TABLE)
DECL(PREFIX_OPERATOR)
DECL(POSTFIX_OPERATOR)
DECL(INFIX_OPERATOR)
DECL(CLASS)
DECL(ENUM)
DECL(ENUM_ELEMENT)
DECL(SUBSCRIPT)
DECL(EXTENSION)
DECL(DESTRUCTOR)
DECL(PRECEDENCE_GROUP)

#ifndef DECL_ATTR
#define DECL_ATTR(NAME, CLASS, OPTIONS, CODE) RECORD_VAL(CLASS##_DECL_ATTR, 100+CODE)
#endif
#include "swift/AST/Attr.def"

FIRST_PATTERN(PAREN, 200)
PATTERN(TUPLE)
TRAILING_INFO(TUPLE_PATTERN_ELT)
PATTERN(NAMED)
PATTERN(ANY)
PATTERN(TYPED)
PATTERN(VAR)

OTHER(PARAMETERLIST, 226)
OTHER(PARAMETERLIST_ELT, 227)
OTHER(FOREIGN_ERROR_CONVENTION, 228)
OTHER(DECL_CONTEXT, 229)
OTHER(XREF_TYPE_PATH_PIECE, 230)
OTHER(XREF_VALUE_PATH_PIECE, 231)
OTHER(XREF_EXTENSION_PATH_PIECE, 232)
OTHER(XREF_OPERATOR_OR_ACCESSOR_PATH_PIECE, 233)
OTHER(XREF_GENERIC_PARAM_PATH_PIECE, 234)
OTHER(XREF_INITIALIZER_PATH_PIECE, 235)

OTHER(ABSTRACT_CLOSURE_EXPR_CONTEXT, 236)
OTHER(PATTERN_BINDING_INITIALIZER_CONTEXT, 237)
OTHER(DEFAULT_ARGUMENT_INITIALIZER_CONTEXT, 238)
OTHER(TOP_LEVEL_CODE_DECL_CONTEXT, 239)

OTHER(GENERIC_PARAM_LIST, 240)
TRAILING_INFO(GENERIC_PARAM)
TRAILING_INFO(GENERIC_REQUIREMENT)
TRAILING_INFO(LAYOUT_REQUIREMENT)
OTHER(GENERIC_SIGNATURE, 244)
OTHER(SIL_GENERIC_ENVIRONMENT, 245)

OTHER(LOCAL_DISCRIMINATOR, 248)
OTHER(PRIVATE_DISCRIMINATOR, 249)

OTHER(ABSTRACT_PROTOCOL_CONFORMANCE, 250)
OTHER(NORMAL_PROTOCOL_CONFORMANCE, 251)
OTHER(SPECIALIZED_PROTOCOL_CONFORMANCE, 252)
OTHER(INHERITED_PROTOCOL_CONFORMANCE, 253)
OTHER(SIL_LAYOUT, 197) // FIXME: Note out-of-order
OTHER(NORMAL_PROTOCOL_CONFORMANCE_ID, 198) // FIXME: Note out-of-order
OTHER(PROTOCOL_CONFORMANCE_XREF, 199) // FIXME: Note out-of-order
OTHER(MEMBERS, 254)
OTHER(XREF, 255)

#undef RECORD
#undef DECLTYPERECORDNODES_HAS_RECORD_VAL
#undef RECORD_VAL
#undef TYPE
#undef FIRST_TYPE
#undef DECL
#undef FIRST_DECL
#undef PATTERN
#undef FIRST_PATTERN
#undef TRAILING_INFO
#undef OTHER
