clang 20.0.0git
Public Types | Public Member Functions | Static Public Member Functions | List of all members
clang::analyze_format_string::ArgType Class Reference

#include "clang/AST/FormatString.h"

Public Types

enum  Kind {
  UnknownTy , InvalidTy , SpecificTy , ObjCPointerTy ,
  CPointerTy , AnyCharTy , CStrTy , WCStrTy ,
  WIntTy
}
 
enum  MatchKind {
  NoMatch = 0 , Match = 1 , MatchPromotion , NoMatchPromotionTypeConfusion ,
  NoMatchPedantic , NoMatchSignedness , NoMatchTypeConfusion
}
 How well a given conversion specifier matches its argument. More...
 

Public Member Functions

 ArgType (Kind K=UnknownTy, const char *N=nullptr)
 
 ArgType (QualType T, const char *N=nullptr)
 
 ArgType (CanQualType T)
 
bool isValid () const
 
bool isSizeT () const
 
bool isPtrdiffT () const
 
MatchKind matchesType (ASTContext &C, QualType argTy) const
 
QualType getRepresentativeType (ASTContext &C) const
 
ArgType makeVectorType (ASTContext &C, unsigned NumElts) const
 
std::string getRepresentativeTypeName (ASTContext &C) const
 

Static Public Member Functions

static ArgType Invalid ()
 
static ArgType PtrTo (const ArgType &A)
 Create an ArgType which corresponds to the type pointer to A.
 
static ArgType makeSizeT (const ArgType &A)
 Create an ArgType which corresponds to the size_t/ssize_t type.
 
static ArgType makePtrdiffT (const ArgType &A)
 Create an ArgType which corresponds to the ptrdiff_t/unsigned ptrdiff_t type.
 

Detailed Description

Definition at line 265 of file FormatString.h.

Member Enumeration Documentation

◆ Kind

Enumerator
UnknownTy 
InvalidTy 
SpecificTy 
ObjCPointerTy 
CPointerTy 
AnyCharTy 
CStrTy 
WCStrTy 
WIntTy 

Definition at line 267 of file FormatString.h.

◆ MatchKind

How well a given conversion specifier matches its argument.

Enumerator
NoMatch 

The conversion specifier and the argument types are incompatible.

For instance, "%d" and float.

Match 

The conversion specifier and the argument type are compatible.

For instance, "%d" and int.

MatchPromotion 

The conversion specifier and the argument type are compatible because of default argument promotions.

For instance, "%hhd" and int.

NoMatchPromotionTypeConfusion 

The conversion specifier and the argument type are compatible but still seems likely to be an error.

For instanace, "%hhd" and short.

NoMatchPedantic 

The conversion specifier and the argument type are disallowed by the C standard, but are in practice harmless.

For instance, "%p" and int*.

NoMatchSignedness 

The conversion specifier and the argument type have different sign.

NoMatchTypeConfusion 

The conversion specifier and the argument type are compatible, but still seems likely to be an error.

For instance, "%hd" and _Bool.

Definition at line 271 of file FormatString.h.

Constructor & Destructor Documentation

◆ ArgType() [1/3]

clang::analyze_format_string::ArgType::ArgType ( Kind  K = UnknownTy,
const char *  N = nullptr 
)
inline

Definition at line 306 of file FormatString.h.

◆ ArgType() [2/3]

clang::analyze_format_string::ArgType::ArgType ( QualType  T,
const char *  N = nullptr 
)
inline

Definition at line 307 of file FormatString.h.

References clang::T.

◆ ArgType() [3/3]

clang::analyze_format_string::ArgType::ArgType ( CanQualType  T)
inline

Definition at line 308 of file FormatString.h.

References clang::T.

Member Function Documentation

◆ getRepresentativeType()

QualType ArgType::getRepresentativeType ( ASTContext C) const

◆ getRepresentativeTypeName()

std::string ArgType::getRepresentativeTypeName ( ASTContext C) const

◆ Invalid()

static ArgType clang::analyze_format_string::ArgType::Invalid ( )
inlinestatic

◆ isPtrdiffT()

bool clang::analyze_format_string::ArgType::isPtrdiffT ( ) const
inline

Definition at line 315 of file FormatString.h.

◆ isSizeT()

bool clang::analyze_format_string::ArgType::isSizeT ( ) const
inline

Definition at line 313 of file FormatString.h.

◆ isValid()

bool clang::analyze_format_string::ArgType::isValid ( ) const
inline

◆ makePtrdiffT()

static ArgType clang::analyze_format_string::ArgType::makePtrdiffT ( const ArgType A)
inlinestatic

Create an ArgType which corresponds to the ptrdiff_t/unsigned ptrdiff_t type.

Definition at line 334 of file FormatString.h.

◆ makeSizeT()

static ArgType clang::analyze_format_string::ArgType::makeSizeT ( const ArgType A)
inlinestatic

Create an ArgType which corresponds to the size_t/ssize_t type.

Definition at line 326 of file FormatString.h.

◆ makeVectorType()

ArgType ArgType::makeVectorType ( ASTContext C,
unsigned  NumElts 
) const

◆ matchesType()

clang::analyze_format_string::ArgType::MatchKind ArgType::matchesType ( ASTContext C,
QualType  argTy 
) const

◆ PtrTo()

static ArgType clang::analyze_format_string::ArgType::PtrTo ( const ArgType A)
inlinestatic

Create an ArgType which corresponds to the type pointer to A.

Definition at line 318 of file FormatString.h.

References InvalidTy.

Referenced by clang::analyze_scanf::ScanfSpecifier::getArgType().


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