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
26enum BinaryOperatorKind {
27#define BINARY_OPERATION(Name, Spelling) BO_##Name,
28#include "clang/AST/OperationKinds.def"
29};
30
31enum UnaryOperatorKind {
32#define UNARY_OPERATION(Name, Spelling) UO_##Name,
33#include "clang/AST/OperationKinds.def"
34};
35
36/// The kind of bridging performed by the Objective-C bridge cast.
37enum ObjCBridgeCastKind {
38 /// Bridging via __bridge, which does nothing but reinterpret
39 /// the bits.
40 OBC_Bridge,
41 /// Bridging via __bridge_transfer, which transfers ownership of an
42 /// Objective-C pointer into ARC.
43 OBC_BridgeTransfer,
44 /// Bridging via __bridge_retain, which makes an ARC object available
45 /// as a +1 C pointer.
46 OBC_BridgeRetained
47};
48
49} // end namespace clang
50
51#endif
52