clang API Documentation

Public Member Functions | Static Public Member Functions | Friends
clang::Selector Class Reference

Smart pointer class that efficiently represents Objective-C method names. More...

#include <IdentifierTable.h>

List of all members.

Public Member Functions

 Selector ()
 Selector (uintptr_t V)
bool operator== (Selector RHS) const
 operator==/!= - Indicate whether the specified selectors are identical.
bool operator!= (Selector RHS) const
void * getAsOpaquePtr () const
bool isNull () const
 Determine whether this is the empty selector.
bool isKeywordSelector () const
bool isUnarySelector () const
unsigned getNumArgs () const
IdentifierInfogetIdentifierInfoForSlot (unsigned argIndex) const
 Retrieve the identifier at a given position in the selector.
StringRef getNameForSlot (unsigned argIndex) const
 Retrieve the name at a given position in the selector.
std::string getAsString () const
 Derive the full selector name (e.g. "foo:bar:") and return it as an std::string.
void print (llvm::raw_ostream &OS) const
 Prints the full selector name (e.g. "foo:bar:").
ObjCMethodFamily getMethodFamily () const
 Derive the conventional family of this method.
ObjCStringFormatFamily getStringFormatFamily () const

Static Public Member Functions

static Selector getEmptyMarker ()
static Selector getTombstoneMarker ()
static ObjCInstanceTypeFamily getInstTypeMethodFamily (Selector sel)

Friends

class Diagnostic
class SelectorTable
class DeclarationName

Detailed Description

Smart pointer class that efficiently represents Objective-C method names.

This class will either point to an IdentifierInfo or a MultiKeywordSelector (which is private). This enables us to optimize selectors that take no arguments and selectors that take 1 argument, which accounts for 78% of all selectors in Cocoa.h.

Definition at line 605 of file IdentifierTable.h.


Constructor & Destructor Documentation

clang::Selector::Selector ( ) [inline]

The default ctor should only be used when creating data structures that will contain selectors.

Definition at line 652 of file IdentifierTable.h.

Referenced by getEmptyMarker(), and getTombstoneMarker().

clang::Selector::Selector ( uintptr_t  V) [inline]

Definition at line 653 of file IdentifierTable.h.


Member Function Documentation

void* clang::Selector::getAsOpaquePtr ( ) const [inline]
std::string Selector::getAsString ( ) const
static Selector clang::Selector::getEmptyMarker ( ) [inline, static]

Definition at line 720 of file IdentifierTable.h.

References Selector().

Referenced by llvm::DenseMapInfo< clang::Selector >::getEmptyKey().

Retrieve the identifier at a given position in the selector.

Note that the identifier pointer returned may be NULL. Clients that only care about the text of the identifier string, and not the specific, uniqued identifier pointer, should use getNameForSlot(), which returns an empty string when the identifier pointer would be NULL.

Parameters:
argIndexThe index for which we want to retrieve the identifier. This index shall be less than getNumArgs() unless this is a keyword selector, in which case 0 is the only permissible value.
Returns:
the uniqued identifier for this slot, or NULL if this slot has no corresponding identifier.

Definition at line 367 of file IdentifierTable.cpp.

References clang::MultiKeywordSelector::getIdentifierInfoForSlot().

Referenced by clang::ObjCMethodCall::argumentsMayEscape(), clang::serialization::ComputeHash(), clang::CodeCompletionResult::CreateCodeCompletionString(), GetAssumedMessageSendExprType(), getInstTypeMethodFamily(), getNameForSlot(), getOrderedName(), getStandardSelLoc(), clang::ASTImporter::Import(), isAcceptableObjCSelector(), and clang::CodeGen::CodeGenFunction::StartObjCMethod().

StringRef Selector::getNameForSlot ( unsigned  argIndex) const

Retrieve the name at a given position in the selector.

Parameters:
argIndexThe index for which we want to retrieve the name. This index shall be less than getNumArgs() unless this is a keyword selector, in which case 0 is the only permissible value.
Returns:
the name for this slot, which may be the empty string if no name was supplied.

Definition at line 377 of file IdentifierTable.cpp.

References getIdentifierInfoForSlot(), and clang::IdentifierInfo::getName().

Referenced by AddSuperSendCompletion(), checkObjCPointerIntrospection(), clang::Sema::CodeCompleteObjCMethodDecl(), clang::Sema::CodeCompleteObjCSelector(), clang::DeclarationName::compare(), clang::CodeCompletionResult::CreateCodeCompletionString(), clang::Sema::DiagnoseAssignmentAsCondition(), findCapturingExpr(), getFreeWhenDoneArg(), hasDefaultGetterName(), hasDefaultSetterName(), isAcceptableMethodMismatch(), isKnownDeallocObjCMethodName(), isSetterLikeSelector(), and rewriteToObjCProperty().

Definition at line 716 of file IdentifierTable.h.

Referenced by DiagnoseCStringFormatDirectiveInObjCAPI().

static Selector clang::Selector::getTombstoneMarker ( ) [inline, static]

Definition at line 723 of file IdentifierTable.h.

References Selector().

Referenced by llvm::DenseMapInfo< clang::Selector >::getTombstoneKey().

Definition at line 670 of file IdentifierTable.h.

bool clang::Selector::isNull ( ) const [inline]
bool clang::Selector::operator!= ( Selector  RHS) const [inline]

Definition at line 659 of file IdentifierTable.h.

bool clang::Selector::operator== ( Selector  RHS) const [inline]

operator==/!= - Indicate whether the specified selectors are identical.

Definition at line 656 of file IdentifierTable.h.

void Selector::print ( llvm::raw_ostream &  OS) const

Prints the full selector name (e.g. "foo:bar:").

Definition at line 415 of file IdentifierTable.cpp.

References getAsString().

Referenced by CompareReturnTypes(), and clang::MangleContext::mangleObjCMethodName().


Friends And Related Function Documentation

friend class DeclarationName [friend]

Definition at line 648 of file IdentifierTable.h.

friend class Diagnostic [friend]

Definition at line 606 of file IdentifierTable.h.

friend class SelectorTable [friend]

Definition at line 647 of file IdentifierTable.h.


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