1//===- OperationKinds.h - Operation enums -----------------------*- C++ -*-===//
2//
3// The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9//
10// This file enumerates the different kinds of operations that can be
11// performed by various expressions.
12//
13//===----------------------------------------------------------------------===//
14
15#ifndef LLVM_CLANG_AST_OPERATIONKINDS_H
16#define LLVM_CLANG_AST_OPERATIONKINDS_H
17
18namespace clang {
19
20/// CastKind - The kind of operation required for a conversion.
21enum CastKind {
22#define CAST_OPERATION(Name) CK_##Name,
23#include "clang/AST/OperationKinds.def"
24};
25
26static const CastKind CK_Invalid = static_cast<CastKind>(-1);
27
28enum BinaryOperatorKind {
29#define BINARY_OPERATION(Name, Spelling) BO_##Name,
30#include "clang/AST/OperationKinds.def"
31};
32
33enum UnaryOperatorKind {
34#define UNARY_OPERATION(Name, Spelling) UO_##Name,
35#include "clang/AST/OperationKinds.def"
36};
37
38/// \brief The kind of bridging performed by the Objective-C bridge cast.
39enum ObjCBridgeCastKind {
40 /// \brief Bridging via __bridge, which does nothing but reinterpret
41 /// the bits.
42 OBC_Bridge,
43 /// \brief Bridging via __bridge_transfer, which transfers ownership of an
44 /// Objective-C pointer into ARC.
45 OBC_BridgeTransfer,
46 /// \brief Bridging via __bridge_retain, which makes an ARC object available
47 /// as a +1 C pointer.
48 OBC_BridgeRetained
49};
50
51} // end namespace clang
52
53#endif
54