clang 22.0.0git
clang::ParamIdx Class Reference

A single parameter index whose accessors require each use to make explicit the parameter index encoding needed. More...

#include "clang/AST/Attr.h"

Public Types

typedef uint32_t SerialType
 A type into which ParamIdx can be serialized.

Public Member Functions

 ParamIdx ()
 Construct an invalid parameter index (isValid returns false and accessors fail an assert).
 ParamIdx (unsigned Idx, const Decl *D)
SerialType serialize () const
 Produce a representation that can later be passed to deserialize to construct an equivalent ParamIdx.
bool isValid () const
 Is this parameter index valid?
unsigned getSourceIndex () const
 Get the parameter index as it would normally be encoded for attributes at the source level of representation: one-origin including any C++ implicit this parameter.
unsigned getASTIndex () const
 Get the parameter index as it would normally be encoded at the AST level of representation: zero-origin not including any C++ implicit this parameter.
unsigned getLLVMIndex () const
 Get the parameter index as it would normally be encoded at the LLVM level of representation: zero-origin including any C++ implicit this parameter.
bool operator== (const ParamIdx &I) const
bool operator!= (const ParamIdx &I) const
bool operator< (const ParamIdx &I) const
bool operator> (const ParamIdx &I) const
bool operator<= (const ParamIdx &I) const
bool operator>= (const ParamIdx &I) const

Static Public Member Functions

static ParamIdx deserialize (SerialType S)
 Construct from a result from serialize.

Detailed Description

A single parameter index whose accessors require each use to make explicit the parameter index encoding needed.

Definition at line 290 of file Attr.h.

Member Typedef Documentation

◆ SerialType

typedef uint32_t clang::ParamIdx::SerialType

A type into which ParamIdx can be serialized.

A static assertion that it's of the correct size follows the ParamIdx class definition.

Definition at line 331 of file Attr.h.

Constructor & Destructor Documentation

◆ ParamIdx() [1/2]

clang::ParamIdx::ParamIdx ( )
inline

Construct an invalid parameter index (isValid returns false and accessors fail an assert).

Definition at line 312 of file Attr.h.

References false.

Referenced by deserialize(), operator!=(), operator<(), operator<=(), operator==(), operator>(), and operator>=().

◆ ParamIdx() [2/2]

clang::ParamIdx::ParamIdx ( unsigned Idx,
const Decl * D )
inline
Parameters
Idxis the parameter index as it is normally specified in attributes in the source: one-origin including any C++ implicit this parameter.
Dis the declaration containing the parameters. It is used to determine if there is a C++ implicit this parameter.

Definition at line 320 of file Attr.h.

References false, and true.

Member Function Documentation

◆ deserialize()

ParamIdx clang::ParamIdx::deserialize ( SerialType S)
inlinestatic

Construct from a result from serialize.

Definition at line 340 of file Attr.h.

References ParamIdx().

◆ getASTIndex()

unsigned clang::ParamIdx::getASTIndex ( ) const
inline

Get the parameter index as it would normally be encoded at the AST level of representation: zero-origin not including any C++ implicit this parameter.

This is the encoding primarily used in Sema. However, in diagnostics, Sema uses getSourceIndex instead.

Definition at line 369 of file Attr.h.

References isValid().

Referenced by clang::Sema::AddAllocAlignAttr(), checkParamIsIntegerType(), handleArgumentWithTypeTagAttr(), clang::SemaSwift::handleAsyncAttr(), handleFormatArgAttr(), handleNonNullAttr(), handleOwnershipAttr(), handleRestrictAttr(), and isSafeSpanTwoParamConstruct().

◆ getLLVMIndex()

unsigned clang::ParamIdx::getLLVMIndex ( ) const
inline

Get the parameter index as it would normally be encoded at the LLVM level of representation: zero-origin including any C++ implicit this parameter.

This is the encoding primarily used in CodeGen.

Definition at line 380 of file Attr.h.

References isValid().

◆ getSourceIndex()

unsigned clang::ParamIdx::getSourceIndex ( ) const
inline

Get the parameter index as it would normally be encoded for attributes at the source level of representation: one-origin including any C++ implicit this parameter.

This encoding thus makes sense for diagnostics, pretty printing, and constructing new attributes from a source-like specification.

Definition at line 358 of file Attr.h.

References isValid().

Referenced by handleOwnershipAttr(), handleRestrictAttr(), and handleXRayLogArgsAttr().

◆ isValid()

bool clang::ParamIdx::isValid ( ) const
inline

Is this parameter index valid?

Definition at line 350 of file Attr.h.

Referenced by getASTIndex(), getLLVMIndex(), getSourceIndex(), handleRestrictAttr(), and isSafeSpanTwoParamConstruct().

◆ operator!=()

bool clang::ParamIdx::operator!= ( const ParamIdx & I) const
inline

Definition at line 390 of file Attr.h.

References ParamIdx().

◆ operator<()

bool clang::ParamIdx::operator< ( const ParamIdx & I) const
inline

Definition at line 394 of file Attr.h.

References ParamIdx().

◆ operator<=()

bool clang::ParamIdx::operator<= ( const ParamIdx & I) const
inline

Definition at line 402 of file Attr.h.

References ParamIdx().

◆ operator==()

bool clang::ParamIdx::operator== ( const ParamIdx & I) const
inline

Definition at line 386 of file Attr.h.

References ParamIdx().

◆ operator>()

bool clang::ParamIdx::operator> ( const ParamIdx & I) const
inline

Definition at line 398 of file Attr.h.

References ParamIdx().

◆ operator>=()

bool clang::ParamIdx::operator>= ( const ParamIdx & I) const
inline

Definition at line 406 of file Attr.h.

References ParamIdx().

◆ serialize()

SerialType clang::ParamIdx::serialize ( ) const
inline

Produce a representation that can later be passed to deserialize to construct an equivalent ParamIdx.

Definition at line 335 of file Attr.h.


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