clang API Documentation

Public Types | Public Member Functions | Friends
clang::ObjCRuntime Class Reference

The basic abstraction for the target Objective-C runtime. More...

#include <ObjCRuntime.h>

List of all members.

Public Types

enum  Kind {
  MacOSX, FragileMacOSX, iOS, GCC,
  GNUstep, ObjFW
}
 The basic Objective-C runtimes that we know about. More...

Public Member Functions

 ObjCRuntime ()
 A bogus initialization of the runtime.
 ObjCRuntime (Kind kind, const VersionTuple &version)
void set (Kind kind, VersionTuple version)
Kind getKind () const
const VersionTuplegetVersion () const
bool isNonFragile () const
 Does this runtime follow the set of implied behaviors for a "non-fragile" ABI?
bool isFragile () const
bool isLegacyDispatchDefaultForArch (llvm::Triple::ArchType Arch)
 The default dispatch mechanism to use for the specified architecture.
bool isGNUFamily () const
 Is this runtime basically of the GNU family of runtimes?
bool isNeXTFamily () const
 Is this runtime basically of the NeXT family of runtimes?
bool allowsARC () const
 Does this runtime allow ARC at all?
bool hasNativeARC () const
 Does this runtime natively provide the ARC entrypoints?
bool hasOptimizedSetter () const
 Does this runtime supports optimized setter entrypoints?
bool allowsWeak () const
 Does this runtime allow the use of __weak?
bool hasNativeWeak () const
 Does this runtime natively provide ARC-compliant 'weak' entrypoints?
bool hasSubscripting () const
 Does this runtime directly support the subscripting methods?
bool allowsSizeofAlignof () const
 Does this runtime allow sizeof or alignof on object types?
bool allowsPointerArithmetic () const
 Does this runtime allow pointer arithmetic on objects?
bool isSubscriptPointerArithmetic () const
 Is subscripting pointer arithmetic?
bool hasTerminate () const
 Does this runtime provide an objc_terminate function?
bool hasWeakClassImport () const
 Does this runtime support weakly importing classes?
bool hasUnwindExceptions () const
 Does this runtime use zero-cost exceptions?
bool hasAtomicCopyHelper () const
bool tryParse (StringRef input)
 Try to parse an Objective-C runtime specification from the given string.
std::string getAsString () const

Friends

bool operator== (const ObjCRuntime &left, const ObjCRuntime &right)
bool operator!= (const ObjCRuntime &left, const ObjCRuntime &right)

Detailed Description

The basic abstraction for the target Objective-C runtime.

Definition at line 25 of file ObjCRuntime.h.


Member Enumeration Documentation

The basic Objective-C runtimes that we know about.

Enumerator:
MacOSX 

'macosx' is the Apple-provided NeXT-derived runtime on Mac OS X platforms that use the non-fragile ABI; the version is a release of that OS.

FragileMacOSX 

'macosx-fragile' is the Apple-provided NeXT-derived runtime on Mac OS X platforms that use the fragile ABI; the version is a release of that OS.

iOS 

'ios' is the Apple-provided NeXT-derived runtime on iOS or the iOS simulator; it is always non-fragile. The version is a release version of iOS.

GCC 

'gcc' is the Objective-C runtime shipped with GCC, implementing a fragile Objective-C ABI

GNUstep 

'gnustep' is the modern non-fragile GNUstep runtime.

ObjFW 

'objfw' is the Objective-C runtime included in ObjFW

Definition at line 28 of file ObjCRuntime.h.


Constructor & Destructor Documentation

A bogus initialization of the runtime.

Definition at line 61 of file ObjCRuntime.h.

clang::ObjCRuntime::ObjCRuntime ( Kind  kind,
const VersionTuple version 
) [inline]

Definition at line 63 of file ObjCRuntime.h.


Member Function Documentation

bool clang::ObjCRuntime::allowsARC ( ) const [inline]

Does this runtime allow ARC at all?

Definition at line 134 of file ObjCRuntime.h.

References FragileMacOSX, GCC, getKind(), GNUstep, iOS, MacOSX, and ObjFW.

Referenced by ParseLangArgs().

Does this runtime allow pointer arithmetic on objects?

This covers +, -, ++, --, and (if isSubscriptPointerArithmetic() yields true) [].

Definition at line 220 of file ObjCRuntime.h.

References FragileMacOSX, GCC, getKind(), GNUstep, iOS, MacOSX, and ObjFW.

Referenced by checkArithmeticOnObjCPointer(), and isSubscriptPointerArithmetic().

Does this runtime allow sizeof or alignof on object types?

Definition at line 212 of file ObjCRuntime.h.

References isFragile().

Referenced by CheckObjCTraitOperandConstraints().

Does this runtime allow the use of __weak?

Definition at line 180 of file ObjCRuntime.h.

References hasNativeWeak().

Referenced by ParseLangArgs().

std::string ObjCRuntime::getAsString ( ) const

Definition at line 19 of file ObjCRuntime.cpp.

Kind clang::ObjCRuntime::getKind ( ) const [inline]
const VersionTuple& clang::ObjCRuntime::getVersion ( ) const [inline]

Does this runtime natively provide the ARC entrypoints?

ARC cannot be directly supported on a platform that does not provide these entrypoints, although it may be supportable via a stub library.

Definition at line 151 of file ObjCRuntime.h.

References FragileMacOSX, GCC, getKind(), getVersion(), GNUstep, iOS, MacOSX, and ObjFW.

Referenced by clang::driver::toolchains::DarwinClang::AddLinkARCArgs(), createARCRuntimeFunction(), clang::CodeGen::CodeGenFunction::EmitObjCAutoreleasePoolStmt(), and hasNativeWeak().

Does this runtime natively provide ARC-compliant 'weak' entrypoints?

Definition at line 186 of file ObjCRuntime.h.

References hasNativeARC().

Referenced by allowsWeak().

Does this runtime supports optimized setter entrypoints?

Definition at line 165 of file ObjCRuntime.h.

References getKind(), getVersion(), GNUstep, iOS, and MacOSX.

Referenced by UseOptimizedSetter().

Does this runtime directly support the subscripting methods?

This is really a property of the library, not the runtime.

Definition at line 195 of file ObjCRuntime.h.

References FragileMacOSX, GCC, getKind(), getVersion(), GNUstep, iOS, MacOSX, and ObjFW.

Referenced by clang::driver::toolchains::DarwinClang::AddLinkARCArgs().

Does this runtime provide an objc_terminate function?

This is used in handlers for exceptions during the unwind process; without it, abort() must be used in pure ObjC files.

Definition at line 243 of file ObjCRuntime.h.

References FragileMacOSX, GCC, getKind(), getVersion(), GNUstep, iOS, MacOSX, and ObjFW.

Referenced by getTerminateFn().

Does this runtime use zero-cost exceptions?

Definition at line 269 of file ObjCRuntime.h.

References FragileMacOSX, GCC, getKind(), GNUstep, iOS, MacOSX, and ObjFW.

Referenced by hasUnwindExceptions().

Does this runtime support weakly importing classes?

Definition at line 256 of file ObjCRuntime.h.

References FragileMacOSX, GCC, getKind(), GNUstep, iOS, MacOSX, and ObjFW.

Referenced by clang::Decl::canBeWeakImported(), and HasFeature().

bool clang::ObjCRuntime::isFragile ( ) const [inline]

The inverse of isNonFragile(): does this runtime follow the set of implied behaviors for a "fragile" ABI?

Definition at line 90 of file ObjCRuntime.h.

References isNonFragile().

Referenced by clang::Sema::ActOnPropertyImplDecl(), allowsSizeofAlignof(), clang::Sema::BuildExceptionDeclaration(), and clang::Sema::DefaultSynthesizeProperties().

Is this runtime basically of the GNU family of runtimes?

Definition at line 112 of file ObjCRuntime.h.

References FragileMacOSX, GCC, getKind(), GNUstep, iOS, MacOSX, and ObjFW.

Referenced by EncodeBitField(), clang::CodeGen::CodeGenModule::GetAddrOfRTTIDescriptor(), and isNeXTFamily().

bool clang::ObjCRuntime::isLegacyDispatchDefaultForArch ( llvm::Triple::ArchType  Arch) [inline]

The default dispatch mechanism to use for the specified architecture.

Definition at line 93 of file ObjCRuntime.h.

References getKind(), getVersion(), GNUstep, isNonFragile(), and MacOSX.

Referenced by clang::driver::tools::Clang::ConstructJob().

Is this runtime basically of the NeXT family of runtimes?

Definition at line 127 of file ObjCRuntime.h.

References isGNUFamily().

Referenced by CheckProtocolMethodDefs(), clang::driver::tools::Clang::ConstructJob(), and InitializePredefinedMacros().

Is subscripting pointer arithmetic?

Definition at line 235 of file ObjCRuntime.h.

References allowsPointerArithmetic().

void clang::ObjCRuntime::set ( Kind  kind,
VersionTuple  version 
) [inline]

Definition at line 66 of file ObjCRuntime.h.

bool ObjCRuntime::tryParse ( StringRef  input)

Try to parse an Objective-C runtime specification from the given string.

Returns:
true on error.

Definition at line 43 of file ObjCRuntime.cpp.

References FragileMacOSX, GCC, GNUstep, iOS, MacOSX, ObjFW, and clang::VersionTuple::tryParse().

Referenced by ParseLangArgs().


Friends And Related Function Documentation

bool operator!= ( const ObjCRuntime left,
const ObjCRuntime right 
) [friend]

Definition at line 306 of file ObjCRuntime.h.

bool operator== ( const ObjCRuntime left,
const ObjCRuntime right 
) [friend]

Definition at line 301 of file ObjCRuntime.h.


The documentation for this class was generated from the following files: