Home | History | Annotate | Line # | Download | only in AST
      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_DECLOBJC_COMMON_H
     15 #define LLVM_CLANG_AST_DECLOBJC_COMMON_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_DECLOBJC_COMMON_H
     56