clang  14.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, 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. More...
 
static ArgType makeSizeT (const ArgType &A)
 Create an ArgType which corresponds to the size_t/ssize_t type. More...
 
static ArgType makePtrdiffT (const ArgType &A)
 Create an ArgType which corresponds to the ptrdiff_t/unsigned ptrdiff_t type. More...
 

Detailed Description

Definition at line 249 of file FormatString.h.

Member Enumeration Documentation

◆ Kind

Enumerator
UnknownTy 
InvalidTy 
SpecificTy 
ObjCPointerTy 
CPointerTy 
AnyCharTy 
CStrTy 
WCStrTy 
WIntTy 

Definition at line 251 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 _Bool.

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

Referenced by Invalid().

◆ ArgType() [2/3]

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

Definition at line 283 of file FormatString.h.

◆ ArgType() [3/3]

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

Definition at line 284 of file FormatString.h.

Member Function Documentation

◆ getRepresentativeType()

QualType ArgType::getRepresentativeType ( ASTContext C) const

Definition at line 504 of file FormatString.cpp.

◆ getRepresentativeTypeName()

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

Definition at line 540 of file FormatString.cpp.

References string().

◆ Invalid()

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

◆ isPtrdiffT()

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

Definition at line 291 of file FormatString.h.

◆ isSizeT()

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

Definition at line 289 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 310 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 302 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 294 of file FormatString.h.

References InvalidTy.

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


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