clang 19.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 , 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*.

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 304 of file FormatString.h.

◆ ArgType() [2/3]

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

Definition at line 305 of file FormatString.h.

◆ ArgType() [3/3]

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

Definition at line 306 of file FormatString.h.

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 313 of file FormatString.h.

◆ isSizeT()

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

Definition at line 311 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 332 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 324 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 316 of file FormatString.h.

References InvalidTy.

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


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