| //===- 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 |