clang 24.0.0git
clang::analyze_format_string::FormatSpecifier Class Reference

#include "clang/AST/FormatString.h"

Inheritance diagram for clang::analyze_format_string::FormatSpecifier:
[legend]

Public Member Functions

 FormatSpecifier (bool isPrintf)
void setLengthModifier (LengthModifier lm)
void setUsesPositionalArg ()
void setArgIndex (unsigned i)
unsigned getArgIndex () const
unsigned getPositionalArgIndex () const
const LengthModifier & getLengthModifier () const
const OptionalAmount & getFieldWidth () const
void setVectorNumElts (const OptionalAmount &Amt)
const OptionalAmount & getVectorNumElts () const
void setFieldWidth (const OptionalAmount &Amt)
bool usesPositionalArg () const
bool hasValidLengthModifier (const TargetInfo &Target, const LangOptions &LO) const
bool hasStandardLengthModifier () const
std::optional< LengthModifier > getCorrectedLengthModifier () const
bool hasStandardConversionSpecifier (const LangOptions &LangOpt) const
bool hasStandardLengthConversionCombination () const

Static Public Member Functions

static bool namedTypeToLengthModifier (ASTContext &Ctx, QualType QT, LengthModifier &LM)
 For a TypedefType QT, if it is a named integer type such as size_t, assign the appropriate value to LM and return true.

Protected Attributes

LengthModifier LM
OptionalAmount FieldWidth
ConversionSpecifier CS
OptionalAmount VectorNumElts
bool UsesPositionalArg
 Positional arguments, an IEEE extension: IEEE Std 1003.1, 2004 Edition http://www.opengroup.org/onlinepubs/009695399/functions/printf.html.
unsigned argIndex

Detailed Description

Definition at line 461 of file FormatString.h.

Constructor & Destructor Documentation

◆ FormatSpecifier()

clang::analyze_format_string::FormatSpecifier::FormatSpecifier ( bool isPrintf)
inline

Member Function Documentation

◆ getArgIndex()

unsigned clang::analyze_format_string::FormatSpecifier::getArgIndex ( ) const
inline

Definition at line 485 of file FormatString.h.

References argIndex.

Referenced by libc_func_matchers::hasUnsafeFormatOrSArg().

◆ getCorrectedLengthModifier()

◆ getFieldWidth()

const OptionalAmount & clang::analyze_format_string::FormatSpecifier::getFieldWidth ( ) const
inline

Definition at line 491 of file FormatString.h.

References FieldWidth.

◆ getLengthModifier()

const LengthModifier & clang::analyze_format_string::FormatSpecifier::getLengthModifier ( ) const
inline

Definition at line 489 of file FormatString.h.

References LM.

Referenced by libc_func_matchers::hasUnsafeFormatOrSArg().

◆ getPositionalArgIndex()

unsigned clang::analyze_format_string::FormatSpecifier::getPositionalArgIndex ( ) const
inline

◆ getVectorNumElts()

const OptionalAmount & clang::analyze_format_string::FormatSpecifier::getVectorNumElts ( ) const
inline

Definition at line 495 of file FormatString.h.

References VectorNumElts.

◆ hasStandardConversionSpecifier()

bool FormatSpecifier::hasStandardConversionSpecifier ( const LangOptions & LangOpt) const

Definition at line 1403 of file FormatString.cpp.

References clang::analyze_format_string::ConversionSpecifier::AArg, clang::analyze_format_string::ConversionSpecifier::aArg, clang::analyze_format_string::ConversionSpecifier::BArg, clang::analyze_format_string::ConversionSpecifier::bArg, clang::analyze_format_string::ConversionSpecifier::CArg, clang::analyze_format_string::ConversionSpecifier::cArg, CS, clang::analyze_format_string::ConversionSpecifier::DArg, clang::analyze_format_string::ConversionSpecifier::dArg, clang::analyze_format_string::ConversionSpecifier::EArg, clang::analyze_format_string::ConversionSpecifier::eArg, clang::analyze_format_string::ConversionSpecifier::FArg, clang::analyze_format_string::ConversionSpecifier::fArg, clang::analyze_format_string::ConversionSpecifier::FreeBSDbArg, clang::analyze_format_string::ConversionSpecifier::FreeBSDDArg, clang::analyze_format_string::ConversionSpecifier::FreeBSDrArg, clang::analyze_format_string::ConversionSpecifier::FreeBSDyArg, clang::analyze_format_string::ConversionSpecifier::GArg, clang::analyze_format_string::ConversionSpecifier::gArg, clang::analyze_format_string::ConversionSpecifier::iArg, clang::analyze_format_string::ConversionSpecifier::InvalidSpecifier, clang::analyze_format_string::ConversionSpecifier::KArg, clang::analyze_format_string::ConversionSpecifier::kArg, clang::analyze_format_string::ConversionSpecifier::nArg, clang::analyze_format_string::ConversionSpecifier::OArg, clang::analyze_format_string::ConversionSpecifier::oArg, clang::analyze_format_string::ConversionSpecifier::ObjCObjArg, clang::analyze_format_string::ConversionSpecifier::PArg, clang::analyze_format_string::ConversionSpecifier::pArg, clang::analyze_format_string::ConversionSpecifier::PercentArg, clang::analyze_format_string::ConversionSpecifier::PrintErrno, clang::analyze_format_string::ConversionSpecifier::RArg, clang::analyze_format_string::ConversionSpecifier::rArg, clang::analyze_format_string::ConversionSpecifier::SArg, clang::analyze_format_string::ConversionSpecifier::sArg, clang::analyze_format_string::ConversionSpecifier::ScanListArg, clang::analyze_format_string::ConversionSpecifier::UArg, clang::analyze_format_string::ConversionSpecifier::uArg, clang::analyze_format_string::ConversionSpecifier::XArg, clang::analyze_format_string::ConversionSpecifier::xArg, and clang::analyze_format_string::ConversionSpecifier::ZArg.

◆ hasStandardLengthConversionCombination()

◆ hasStandardLengthModifier()

◆ hasValidLengthModifier()

bool FormatSpecifier::hasValidLengthModifier ( const TargetInfo & Target,
const LangOptions & LO ) const

Definition at line 1158 of file FormatString.cpp.

References clang::analyze_format_string::ConversionSpecifier::AArg, clang::analyze_format_string::ConversionSpecifier::aArg, clang::analyze_format_string::LengthModifier::AsAllocate, clang::analyze_format_string::LengthModifier::AsChar, clang::analyze_format_string::LengthModifier::AsDecimal128, clang::analyze_format_string::LengthModifier::AsDecimal32, clang::analyze_format_string::LengthModifier::AsDecimal64, clang::analyze_format_string::LengthModifier::AsFastIntN, clang::analyze_format_string::LengthModifier::AsInt32, clang::analyze_format_string::LengthModifier::AsInt3264, clang::analyze_format_string::LengthModifier::AsInt64, clang::analyze_format_string::LengthModifier::AsIntMax, clang::analyze_format_string::LengthModifier::AsIntN, clang::analyze_format_string::LengthModifier::AsLong, clang::analyze_format_string::LengthModifier::AsLongDouble, clang::analyze_format_string::LengthModifier::AsLongLong, clang::analyze_format_string::LengthModifier::AsMAllocate, clang::analyze_format_string::LengthModifier::AsPtrDiff, clang::analyze_format_string::LengthModifier::AsQuad, clang::analyze_format_string::LengthModifier::AsShort, clang::analyze_format_string::LengthModifier::AsShortLong, clang::analyze_format_string::LengthModifier::AsSizeT, clang::analyze_format_string::LengthModifier::AsWide, clang::analyze_format_string::ConversionSpecifier::BArg, clang::analyze_format_string::ConversionSpecifier::bArg, clang::analyze_format_string::ConversionSpecifier::CArg, clang::analyze_format_string::ConversionSpecifier::cArg, CS, clang::analyze_format_string::ConversionSpecifier::DArg, clang::analyze_format_string::ConversionSpecifier::dArg, clang::analyze_format_string::ConversionSpecifier::EArg, clang::analyze_format_string::ConversionSpecifier::eArg, clang::analyze_format_string::ConversionSpecifier::FArg, clang::analyze_format_string::ConversionSpecifier::fArg, clang::analyze_format_string::ConversionSpecifier::FreeBSDrArg, clang::analyze_format_string::ConversionSpecifier::FreeBSDyArg, clang::analyze_format_string::ConversionSpecifier::GArg, clang::analyze_format_string::ConversionSpecifier::gArg, clang::analyze_format_string::ConversionSpecifier::iArg, LM, clang::analyze_format_string::ConversionSpecifier::nArg, clang::TransferrableTargetInfo::NoInt, clang::analyze_format_string::LengthModifier::None, clang::analyze_format_string::ConversionSpecifier::OArg, clang::analyze_format_string::ConversionSpecifier::oArg, clang::analyze_format_string::ConversionSpecifier::SArg, clang::analyze_format_string::ConversionSpecifier::sArg, clang::analyze_format_string::ConversionSpecifier::ScanListArg, clang::Target, clang::analyze_format_string::ConversionSpecifier::UArg, clang::analyze_format_string::ConversionSpecifier::uArg, VectorNumElts, clang::analyze_format_string::ConversionSpecifier::XArg, clang::analyze_format_string::ConversionSpecifier::xArg, and clang::analyze_format_string::ConversionSpecifier::ZArg.

Referenced by clang::analyze_printf::PrintfSpecifier::fixType(), and clang::analyze_scanf::ScanfSpecifier::fixType().

◆ namedTypeToLengthModifier()

bool FormatSpecifier::namedTypeToLengthModifier ( ASTContext & Ctx,
QualType QT,
LengthModifier & LM )
static

For a TypedefType QT, if it is a named integer type such as size_t, assign the appropriate value to LM and return true.

Definition at line 1485 of file FormatString.cpp.

References LM, namedTypeToLengthModifierKind(), and clang::analyze_format_string::LengthModifier::None.

Referenced by clang::analyze_printf::PrintfSpecifier::fixType(), and clang::analyze_scanf::ScanfSpecifier::fixType().

◆ setArgIndex()

void clang::analyze_format_string::FormatSpecifier::setArgIndex ( unsigned i)
inline

◆ setFieldWidth()

void clang::analyze_format_string::FormatSpecifier::setFieldWidth ( const OptionalAmount & Amt)
inline

Definition at line 497 of file FormatString.h.

References FieldWidth.

Referenced by clang::analyze_format_string::ParseFieldWidth(), and ParseScanfSpecifier().

◆ setLengthModifier()

void clang::analyze_format_string::FormatSpecifier::setLengthModifier ( LengthModifier lm)
inline

Definition at line 479 of file FormatString.h.

References LM.

Referenced by clang::analyze_format_string::ParseLengthModifier().

◆ setUsesPositionalArg()

void clang::analyze_format_string::FormatSpecifier::setUsesPositionalArg ( )
inline

Definition at line 481 of file FormatString.h.

References UsesPositionalArg.

Referenced by clang::analyze_format_string::ParseArgPosition().

◆ setVectorNumElts()

void clang::analyze_format_string::FormatSpecifier::setVectorNumElts ( const OptionalAmount & Amt)
inline

Definition at line 493 of file FormatString.h.

References VectorNumElts.

Referenced by clang::analyze_format_string::ParseVectorModifier().

◆ usesPositionalArg()

bool clang::analyze_format_string::FormatSpecifier::usesPositionalArg ( ) const
inline

Member Data Documentation

◆ argIndex

unsigned clang::analyze_format_string::FormatSpecifier::argIndex
protected

Definition at line 472 of file FormatString.h.

Referenced by FormatSpecifier(), getArgIndex(), getPositionalArgIndex(), and setArgIndex().

◆ CS

◆ FieldWidth

◆ LM

◆ UsesPositionalArg

bool clang::analyze_format_string::FormatSpecifier::UsesPositionalArg
protected

◆ VectorNumElts


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