| //===--- ObjCRuntime.h - Objective C runtime features -----------*- C++ -*-===// |
| // |
| // The LLVM Compiler Infrastructure |
| // |
| // This file is distributed under the University of Illinois Open Source |
| // License. See LICENSE.TXT for details. |
| // |
| //===----------------------------------------------------------------------===// |
| |
| #ifndef CLANG_DRIVER_OBJCRUNTIME_H_ |
| #define CLANG_DRIVER_OBJCRUNTIME_H_ |
| |
| namespace clang { |
| namespace driver { |
| |
| class ObjCRuntime { |
| public: |
| enum Kind { GNU, NeXT }; |
| private: |
| unsigned RuntimeKind : 1; |
| public: |
| void setKind(Kind k) { RuntimeKind = k; } |
| Kind getKind() const { return static_cast<Kind>(RuntimeKind); } |
| |
| /// True if the runtime provides native ARC entrypoints. ARC may |
| /// still be usable without this if the tool-chain provides a |
| /// statically-linked runtime support library. |
| unsigned HasARC : 1; |
| |
| /// True if the runtime supports ARC zeroing __weak. |
| unsigned HasWeak : 1; |
| |
| /// \brief True if the runtime supports subscripting methods. |
| unsigned HasSubscripting : 1; |
| |
| /// True if the runtime provides the following entrypoint: |
| /// void objc_terminate(void); |
| /// If available, this will be called instead of abort() when an |
| /// exception is thrown out of an EH cleanup. |
| unsigned HasTerminate : 1; |
| |
| ObjCRuntime() : RuntimeKind(NeXT), HasARC(false), HasWeak(false), |
| HasSubscripting(false), HasTerminate(false) {} |
| }; |
| |
| } |
| } |
| |
| #endif |