1 //===- DeclObjCCommon.h - Classes for representing declarations -*- C++ -*-===// 2 // 3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4 // See https://llvm.org/LICENSE.txt for license information. 5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6 // 7 //===----------------------------------------------------------------------===// 8 // 9 // This file contains common ObjC enums and classes used in AST and 10 // Sema. 11 // 12 //===----------------------------------------------------------------------===// 13 14 #ifndef LLVM_CLANG_AST_DECLOBJCCOMMON_H 15 #define LLVM_CLANG_AST_DECLOBJCCOMMON_H 16 17 namespace clang { 18 19 /// ObjCPropertyAttribute::Kind - list of property attributes. 20 /// Keep this list in sync with LLVM's Dwarf.h ApplePropertyAttributes.s 21 namespace ObjCPropertyAttribute { 22 enum Kind { 23 kind_noattr = 0x00, 24 kind_readonly = 0x01, 25 kind_getter = 0x02, 26 kind_assign = 0x04, 27 kind_readwrite = 0x08, 28 kind_retain = 0x10, 29 kind_copy = 0x20, 30 kind_nonatomic = 0x40, 31 kind_setter = 0x80, 32 kind_atomic = 0x100, 33 kind_weak = 0x200, 34 kind_strong = 0x400, 35 kind_unsafe_unretained = 0x800, 36 /// Indicates that the nullability of the type was spelled with a 37 /// property attribute rather than a type qualifier. 38 kind_nullability = 0x1000, 39 kind_null_resettable = 0x2000, 40 kind_class = 0x4000, 41 kind_direct = 0x8000, 42 // Adding a property should change NumObjCPropertyAttrsBits 43 // Also, don't forget to update the Clang C API at CXObjCPropertyAttrKind and 44 // clang_Cursor_getObjCPropertyAttributes. 45 }; 46 } // namespace ObjCPropertyAttribute::Kind 47 48 enum { 49 /// Number of bits fitting all the property attributes. 50 NumObjCPropertyAttrsBits = 16 51 }; 52 53 } // namespace clang 54 55 #endif // LLVM_CLANG_AST_DECLOBJCCOMMON_H 56