summaryrefslogtreecommitdiff
path: root/clang/include/clang/AST/DeclObjCCommon.h
diff options
context:
space:
mode:
Diffstat (limited to 'clang/include/clang/AST/DeclObjCCommon.h')
-rw-r--r--clang/include/clang/AST/DeclObjCCommon.h55
1 files changed, 55 insertions, 0 deletions
diff --git a/clang/include/clang/AST/DeclObjCCommon.h b/clang/include/clang/AST/DeclObjCCommon.h
new file mode 100644
index 000000000000..5f03bce6e9a8
--- /dev/null
+++ b/clang/include/clang/AST/DeclObjCCommon.h
@@ -0,0 +1,55 @@
+//===- DeclObjCCommon.h - Classes for representing declarations -*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+//
+// This file contains common ObjC enums and classes used in AST and
+// Sema.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_CLANG_AST_DECLOBJC_COMMON_H
+#define LLVM_CLANG_AST_DECLOBJC_COMMON_H
+
+namespace clang {
+
+/// ObjCPropertyAttribute::Kind - list of property attributes.
+/// Keep this list in sync with LLVM's Dwarf.h ApplePropertyAttributes.s
+namespace ObjCPropertyAttribute {
+enum Kind {
+ kind_noattr = 0x00,
+ kind_readonly = 0x01,
+ kind_getter = 0x02,
+ kind_assign = 0x04,
+ kind_readwrite = 0x08,
+ kind_retain = 0x10,
+ kind_copy = 0x20,
+ kind_nonatomic = 0x40,
+ kind_setter = 0x80,
+ kind_atomic = 0x100,
+ kind_weak = 0x200,
+ kind_strong = 0x400,
+ kind_unsafe_unretained = 0x800,
+ /// Indicates that the nullability of the type was spelled with a
+ /// property attribute rather than a type qualifier.
+ kind_nullability = 0x1000,
+ kind_null_resettable = 0x2000,
+ kind_class = 0x4000,
+ kind_direct = 0x8000,
+ // Adding a property should change NumObjCPropertyAttrsBits
+ // Also, don't forget to update the Clang C API at CXObjCPropertyAttrKind and
+ // clang_Cursor_getObjCPropertyAttributes.
+};
+} // namespace ObjCPropertyAttribute::Kind
+
+enum {
+ /// Number of bits fitting all the property attributes.
+ NumObjCPropertyAttrsBits = 16
+};
+
+} // namespace clang
+
+#endif // LLVM_CLANG_AST_DECLOBJC_COMMON_H