Files
swift-mirror/include/swift/AST/Attr.def
2014-03-26 19:47:08 +00:00

105 lines
2.4 KiB
C++

//===--- Attr.def - Swift Attributes Metaprogramming ------------*- C++ -*-===//
//
// This source file is part of the Swift.org open source project
//
// Copyright (c) 2014 - 2015 Apple Inc. and the Swift project authors
// Licensed under Apache License v2.0 with Runtime Library Exception
//
// See http://swift.org/LICENSE.txt for license information
// See http://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
//
//===----------------------------------------------------------------------===//
//
// This file defines macros used for macro-metaprogramming with attributes.
//
//===----------------------------------------------------------------------===//
#ifndef ATTR
#define ATTR(X)
#endif
#ifndef DECL_ATTR
#define DECL_ATTR(X, ...)
#endif
#ifndef TYPE_ATTR
#define TYPE_ATTR(X)
#endif
#ifndef IB_ATTR
#define IB_ATTR(X) ATTR(X)
#endif
#ifndef VIRTUAL_ATTR
#define VIRTUAL_ATTR(X) ATTR(X)
#endif
// Type attributes
TYPE_ATTR(auto_closure)
TYPE_ATTR(cc)
TYPE_ATTR(noreturn)
TYPE_ATTR(objc_block)
TYPE_ATTR(thin)
TYPE_ATTR(thick)
TYPE_ATTR(unchecked)
// SIL-specific attributes
TYPE_ATTR(sil_self)
TYPE_ATTR(local_storage)
TYPE_ATTR(sil_unowned)
TYPE_ATTR(sil_weak)
TYPE_ATTR(out)
TYPE_ATTR(in)
TYPE_ATTR(inout)
TYPE_ATTR(owned)
TYPE_ATTR(guaranteed)
TYPE_ATTR(autoreleased)
TYPE_ATTR(callee_owned)
TYPE_ATTR(callee_guaranteed)
TYPE_ATTR(objc_metatype)
TYPE_ATTR(opened)
// Schema for DECL_ATTR:
//
// - Attribute name.
// - Options for the attribute, including the declarations the
// attribute can appear, and whether duplicates are allowed.
DECL_ATTR(asmname, OnFunc|OnConstructor|OnDestructor)
DECL_ATTR(availability, OnFunc | OnStruct | OnEnum |
OnClass | OnProtocol | OnVar |
OnConstructor | OnDestructor |
AllowMultipleAttributes)
DECL_ATTR(objc, OnFunc |OnClass | OnProtocol | OnVar | OnSubscript |
OnConstructor | OnDestructor)
ATTR(assignment)
ATTR(class_protocol)
ATTR(conversion)
ATTR(exported)
ATTR(infix)
ATTR(mutating)
ATTR(noreturn)
ATTR(prefix)
ATTR(postfix)
ATTR(optional)
ATTR(override)
ATTR(required)
ATTR(transparent)
ATTR(unowned)
ATTR(weak)
ATTR(requires_stored_property_inits)
IB_ATTR(IBOutlet)
IB_ATTR(IBAction)
IB_ATTR(IBDesignable)
IB_ATTR(IBInspectable)
// "Virtual" attributes can not be spelled in the source code.
VIRTUAL_ATTR(raw_doc_comment)
#undef VIRTUAL_ATTR
#undef IB_ATTR
#undef DECL_ATTR
#undef TYPE_ATTR
#undef ATTR