clang 22.0.0git
clang::analyze_printf::PrintfSpecifier Class Reference

#include "clang/AST/FormatString.h"

Inheritance diagram for clang::analyze_printf::PrintfSpecifier:
[legend]

Public Member Functions

 PrintfSpecifier ()
void setConversionSpecifier (const PrintfConversionSpecifier &cs)
void setHasThousandsGrouping (const char *position)
void setIsLeftJustified (const char *position)
void setHasPlusPrefix (const char *position)
void setHasSpacePrefix (const char *position)
void setHasAlternativeForm (const char *position)
void setHasLeadingZeros (const char *position)
void setHasObjCTechnicalTerm (const char *position)
void setIsPrivate (const char *position)
void setIsPublic (const char *position)
void setIsSensitive (const char *position)
void setUsesPositionalArg ()
const PrintfConversionSpecifiergetConversionSpecifier () const
void setPrecision (const OptionalAmount &Amt)
const OptionalAmountgetPrecision () const
bool consumesDataArgument () const
ArgType getArgType (ASTContext &Ctx, bool IsObjCLiteral) const
 Returns the builtin type that a data argument paired with this format specifier should have.
const OptionalFlaghasThousandsGrouping () const
const OptionalFlagisLeftJustified () const
const OptionalFlaghasPlusPrefix () const
const OptionalFlaghasAlternativeForm () const
const OptionalFlaghasLeadingZeros () const
const OptionalFlaghasSpacePrefix () const
const OptionalFlaghasObjCTechnicalTerm () const
const OptionalFlagisPrivate () const
const OptionalFlagisPublic () const
const OptionalFlagisSensitive () const
bool usesPositionalArg () const
StringRef getMaskType () const
void setMaskType (StringRef S)
bool fixType (QualType QT, const LangOptions &LangOpt, ASTContext &Ctx, bool IsObjCLiteral)
 Changes the specifier and length according to a QualType, retaining any flags or options.
void toString (raw_ostream &os) const
bool hasValidPlusPrefix () const
bool hasValidAlternativeForm () const
bool hasValidLeadingZeros () const
bool hasValidSpacePrefix () const
bool hasValidLeftJustified () const
bool hasValidThousandsGroupingPrefix () const
bool hasValidPrecision () const
bool hasValidFieldWidth () const
Public Member Functions inherited from clang::analyze_format_string::FormatSpecifier
 FormatSpecifier (bool isPrintf)
void setLengthModifier (LengthModifier lm)
void setUsesPositionalArg ()
void setArgIndex (unsigned i)
unsigned getArgIndex () const
unsigned getPositionalArgIndex () const
const LengthModifiergetLengthModifier () const
const OptionalAmountgetFieldWidth () const
void setVectorNumElts (const OptionalAmount &Amt)
const OptionalAmountgetVectorNumElts () const
void setFieldWidth (const OptionalAmount &Amt)
bool usesPositionalArg () const
bool hasValidLengthModifier (const TargetInfo &Target, const LangOptions &LO) const
bool hasStandardLengthModifier () const
std::optional< LengthModifiergetCorrectedLengthModifier () const
bool hasStandardConversionSpecifier (const LangOptions &LangOpt) const
bool hasStandardLengthConversionCombination () const

Static Public Member Functions

static PrintfSpecifier Parse (const char *beg, const char *end)
Static Public Member Functions inherited from clang::analyze_format_string::FormatSpecifier
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.

Additional Inherited Members

Protected Attributes inherited from clang::analyze_format_string::FormatSpecifier
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 526 of file FormatString.h.

Constructor & Destructor Documentation

◆ PrintfSpecifier()

clang::analyze_printf::PrintfSpecifier::PrintfSpecifier ( )
inline

Definition at line 543 of file FormatString.h.

References clang::analyze_format_string::FormatSpecifier::FormatSpecifier(), and true.

Referenced by Parse().

Member Function Documentation

◆ consumesDataArgument()

bool clang::analyze_printf::PrintfSpecifier::consumesDataArgument ( ) const
inline

◆ fixType()

bool PrintfSpecifier::fixType ( QualType QT,
const LangOptions & LangOpt,
ASTContext & Ctx,
bool IsObjCLiteral )

Changes the specifier and length according to a QualType, retaining any flags or options.

Returns true on success, or false when a conversion was not successful.

Definition at line 750 of file PrintfFormatString.cpp.

References clang::analyze_printf::LengthModifier::AsChar, clang::analyze_printf::LengthModifier::AsLong, clang::analyze_printf::LengthModifier::AsLongDouble, clang::analyze_printf::LengthModifier::AsLongLong, clang::analyze_printf::LengthModifier::AsShort, clang::analyze_printf::LengthModifier::AsShortLong, clang::analyze_printf::LengthModifier::AsWideChar, ConversionSpecifier::cArg, clang::analyze_format_string::FormatSpecifier::CS, ConversionSpecifier::DArg, clang::analyze_format_string::ConversionSpecifier::dArg, ConversionSpecifier::dArg, ConversionSpecifier::fArg, getArgType(), clang::Type::getAs(), clang::Type::getAsEnumDecl(), clang::VectorType::getElementType(), clang::BuiltinType::getKind(), clang::VectorType::getNumElements(), clang::Type::getPointeeType(), clang::ASTContext::getTargetInfo(), clang::analyze_format_string::FormatSpecifier::hasValidLengthModifier(), ConversionSpecifier::iArg, clang::Type::isAnyCharacterType(), clang::Type::isCharType(), clang::Type::isObjCRetainableType(), clang::Type::isPointerType(), clang::Type::isRealFloatingType(), clang::Type::isSignedIntegerType(), clang::Type::isUnsignedIntegerType(), clang::analyze_format_string::ArgType::isValid(), clang::Type::isWideCharType(), clang::analyze_format_string::FormatSpecifier::LM, clang::analyze_format_string::ArgType::matchesType(), clang::analyze_format_string::FormatSpecifier::namedTypeToLengthModifier(), ConversionSpecifier::nArg, clang::analyze_printf::LengthModifier::None, clang::analyze_printf::OptionalAmount::NotSpecified, ConversionSpecifier::ObjCObjArg, ConversionSpecifier::sArg, ConversionSpecifier::UArg, clang::analyze_format_string::ConversionSpecifier::uArg, ConversionSpecifier::uArg, and clang::analyze_format_string::FormatSpecifier::VectorNumElts.

◆ getArgType()

ArgType PrintfSpecifier::getArgType ( ASTContext & Ctx,
bool IsObjCLiteral ) const

Returns the builtin type that a data argument paired with this format specifier should have.

This method will return null if the format specifier does not have a matching data argument or the matching argument matches more than one type.

Definition at line 736 of file PrintfFormatString.cpp.

References clang::analyze_format_string::FormatSpecifier::CS, getConversionSpecifier(), clang::analyze_printf::ArgType::Invalid(), clang::analyze_format_string::ArgType::isValid(), clang::analyze_format_string::ArgType::makeVectorType(), and clang::analyze_format_string::FormatSpecifier::VectorNumElts.

Referenced by fixType().

◆ getConversionSpecifier()

const PrintfConversionSpecifier & clang::analyze_printf::PrintfSpecifier::getConversionSpecifier ( ) const
inline

◆ getMaskType()

StringRef clang::analyze_printf::PrintfSpecifier::getMaskType ( ) const
inline

Definition at line 624 of file FormatString.h.

◆ getPrecision()

const OptionalAmount & clang::analyze_printf::PrintfSpecifier::getPrecision ( ) const
inline

Definition at line 595 of file FormatString.h.

Referenced by libc_func_matchers::hasUnsafeFormatOrSArg().

◆ hasAlternativeForm()

const OptionalFlag & clang::analyze_printf::PrintfSpecifier::hasAlternativeForm ( ) const
inline

Definition at line 615 of file FormatString.h.

◆ hasLeadingZeros()

const OptionalFlag & clang::analyze_printf::PrintfSpecifier::hasLeadingZeros ( ) const
inline

Definition at line 616 of file FormatString.h.

◆ hasObjCTechnicalTerm()

const OptionalFlag & clang::analyze_printf::PrintfSpecifier::hasObjCTechnicalTerm ( ) const
inline

Definition at line 618 of file FormatString.h.

◆ hasPlusPrefix()

const OptionalFlag & clang::analyze_printf::PrintfSpecifier::hasPlusPrefix ( ) const
inline

Definition at line 614 of file FormatString.h.

◆ hasSpacePrefix()

const OptionalFlag & clang::analyze_printf::PrintfSpecifier::hasSpacePrefix ( ) const
inline

Definition at line 617 of file FormatString.h.

◆ hasThousandsGrouping()

const OptionalFlag & clang::analyze_printf::PrintfSpecifier::hasThousandsGrouping ( ) const
inline

Definition at line 610 of file FormatString.h.

◆ hasValidAlternativeForm()

◆ hasValidFieldWidth()

◆ hasValidLeadingZeros()

◆ hasValidLeftJustified()

bool PrintfSpecifier::hasValidLeftJustified ( ) const

◆ hasValidPlusPrefix()

◆ hasValidPrecision()

◆ hasValidSpacePrefix()

◆ hasValidThousandsGroupingPrefix()

◆ isLeftJustified()

const OptionalFlag & clang::analyze_printf::PrintfSpecifier::isLeftJustified ( ) const
inline

Definition at line 613 of file FormatString.h.

◆ isPrivate()

const OptionalFlag & clang::analyze_printf::PrintfSpecifier::isPrivate ( ) const
inline

Definition at line 619 of file FormatString.h.

◆ isPublic()

const OptionalFlag & clang::analyze_printf::PrintfSpecifier::isPublic ( ) const
inline

Definition at line 620 of file FormatString.h.

◆ isSensitive()

const OptionalFlag & clang::analyze_printf::PrintfSpecifier::isSensitive ( ) const
inline

Definition at line 621 of file FormatString.h.

◆ Parse()

PrintfSpecifier clang::analyze_printf::PrintfSpecifier::Parse ( const char * beg,
const char * end )
static

References PrintfSpecifier().

◆ setConversionSpecifier()

void clang::analyze_printf::PrintfSpecifier::setConversionSpecifier ( const PrintfConversionSpecifier & cs)
inline

Definition at line 553 of file FormatString.h.

References clang::analyze_format_string::FormatSpecifier::CS.

Referenced by ParsePrintfSpecifier().

◆ setHasAlternativeForm()

void clang::analyze_printf::PrintfSpecifier::setHasAlternativeForm ( const char * position)
inline

Definition at line 568 of file FormatString.h.

Referenced by ParsePrintfSpecifier().

◆ setHasLeadingZeros()

void clang::analyze_printf::PrintfSpecifier::setHasLeadingZeros ( const char * position)
inline

Definition at line 571 of file FormatString.h.

Referenced by ParsePrintfSpecifier().

◆ setHasObjCTechnicalTerm()

void clang::analyze_printf::PrintfSpecifier::setHasObjCTechnicalTerm ( const char * position)
inline

Definition at line 574 of file FormatString.h.

Referenced by ParseObjCFlags().

◆ setHasPlusPrefix()

void clang::analyze_printf::PrintfSpecifier::setHasPlusPrefix ( const char * position)
inline

Definition at line 562 of file FormatString.h.

Referenced by ParsePrintfSpecifier().

◆ setHasSpacePrefix()

void clang::analyze_printf::PrintfSpecifier::setHasSpacePrefix ( const char * position)
inline

Definition at line 565 of file FormatString.h.

Referenced by ParsePrintfSpecifier().

◆ setHasThousandsGrouping()

void clang::analyze_printf::PrintfSpecifier::setHasThousandsGrouping ( const char * position)
inline

Definition at line 556 of file FormatString.h.

Referenced by ParsePrintfSpecifier().

◆ setIsLeftJustified()

void clang::analyze_printf::PrintfSpecifier::setIsLeftJustified ( const char * position)
inline

Definition at line 559 of file FormatString.h.

Referenced by ParsePrintfSpecifier().

◆ setIsPrivate()

void clang::analyze_printf::PrintfSpecifier::setIsPrivate ( const char * position)
inline

Definition at line 577 of file FormatString.h.

Referenced by ParsePrintfSpecifier().

◆ setIsPublic()

void clang::analyze_printf::PrintfSpecifier::setIsPublic ( const char * position)
inline

Definition at line 578 of file FormatString.h.

Referenced by ParsePrintfSpecifier().

◆ setIsSensitive()

void clang::analyze_printf::PrintfSpecifier::setIsSensitive ( const char * position)
inline

Definition at line 579 of file FormatString.h.

Referenced by ParsePrintfSpecifier().

◆ setMaskType()

void clang::analyze_printf::PrintfSpecifier::setMaskType ( StringRef S)
inline

Definition at line 625 of file FormatString.h.

Referenced by ParsePrintfSpecifier().

◆ setPrecision()

void clang::analyze_printf::PrintfSpecifier::setPrecision ( const OptionalAmount & Amt)
inline

◆ setUsesPositionalArg()

void clang::analyze_printf::PrintfSpecifier::setUsesPositionalArg ( )
inline

◆ toString()

◆ usesPositionalArg()

bool clang::analyze_printf::PrintfSpecifier::usesPositionalArg ( ) const
inline

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