clang 22.0.0git
PrintfFormatString.cpp File Reference
#include "FormatStringParsing.h"
#include "clang/AST/FormatString.h"
#include "clang/AST/OSLog.h"
#include "clang/Basic/TargetInfo.h"
#include "llvm/Support/Regex.h"
#include "clang/Basic/OpenCLImageTypes.def"
#include "clang/Basic/OpenCLExtensionTypes.def"
#include "clang/Basic/AArch64ACLETypes.def"
#include "clang/Basic/PPCTypes.def"
#include "clang/Basic/RISCVVTypes.def"
#include "clang/Basic/WebAssemblyReferenceTypes.def"
#include "clang/Basic/AMDGPUTypes.def"
#include "clang/Basic/HLSLIntangibleTypes.def"
#include "clang/AST/BuiltinTypes.def"

Go to the source code of this file.

Classes

class  PrintfSpecifier

Macros

#define IMAGE_TYPE(ImgType, Id, SingletonId, Access, Suffix)
#define EXT_OPAQUE_TYPE(ExtType, Id, Ext)
#define SVE_TYPE(Name, Id, SingletonId)
#define PPC_VECTOR_TYPE(Name, Id, Size)
#define RVV_TYPE(Name, Id, SingletonId)
#define WASM_TYPE(Name, Id, SingletonId)
#define AMDGPU_TYPE(Name, Id, SingletonId, Width, Align)
#define HLSL_INTANGIBLE_TYPE(Name, Id, SingletonId)
#define SIGNED_TYPE(Id, SingletonId)
#define UNSIGNED_TYPE(Id, SingletonId)
#define FLOATING_TYPE(Id, SingletonId)
#define BUILTIN_TYPE(Id, SingletonId)

Typedefs

typedef clang::analyze_format_string::SpecifierResult< PrintfSpecifierPrintfSpecifierResult

Functions

static bool ParsePrecision (FormatStringHandler &H, PrintfSpecifier &FS, const char *Start, const char *&Beg, const char *E, unsigned *argIndex)
static bool ParseObjCFlags (FormatStringHandler &H, PrintfSpecifier &FS, const char *FlagBeg, const char *E, bool Warn)
static PrintfSpecifierResult ParsePrintfSpecifier (FormatStringHandler &H, const char *&Beg, const char *E, unsigned &argIndex, const LangOptions &LO, const TargetInfo &Target, bool Warn, bool isFreeBSDKPrintf)

Macro Definition Documentation

◆ AMDGPU_TYPE

#define AMDGPU_TYPE ( Name,
Id,
SingletonId,
Width,
Align )
Value:
case BuiltinType::Id:

◆ BUILTIN_TYPE

#define BUILTIN_TYPE ( Id,
SingletonId )
Value:
case BuiltinType::Id:

◆ EXT_OPAQUE_TYPE

#define EXT_OPAQUE_TYPE ( ExtType,
Id,
Ext )
Value:
case BuiltinType::Id:

◆ FLOATING_TYPE

#define FLOATING_TYPE ( Id,
SingletonId )

◆ HLSL_INTANGIBLE_TYPE

#define HLSL_INTANGIBLE_TYPE ( Name,
Id,
SingletonId )
Value:
case BuiltinType::Id:

◆ IMAGE_TYPE

#define IMAGE_TYPE ( ImgType,
Id,
SingletonId,
Access,
Suffix )
Value:
case BuiltinType::Id:

◆ PPC_VECTOR_TYPE

#define PPC_VECTOR_TYPE ( Name,
Id,
Size )
Value:
case BuiltinType::Id:

◆ RVV_TYPE

#define RVV_TYPE ( Name,
Id,
SingletonId )
Value:
case BuiltinType::Id:

◆ SIGNED_TYPE

#define SIGNED_TYPE ( Id,
SingletonId )

◆ SVE_TYPE

#define SVE_TYPE ( Name,
Id,
SingletonId )
Value:
case BuiltinType::Id:

◆ UNSIGNED_TYPE

#define UNSIGNED_TYPE ( Id,
SingletonId )

◆ WASM_TYPE

#define WASM_TYPE ( Name,
Id,
SingletonId )
Value:
case BuiltinType::Id:

Typedef Documentation

◆ PrintfSpecifierResult

Function Documentation

◆ ParseObjCFlags()

◆ ParsePrecision()

bool ParsePrecision ( FormatStringHandler & H,
PrintfSpecifier & FS,
const char * Start,
const char *& Beg,
const char * E,
unsigned * argIndex )
static

◆ ParsePrintfSpecifier()

PrintfSpecifierResult ParsePrintfSpecifier ( FormatStringHandler & H,
const char *& Beg,
const char * E,
unsigned & argIndex,
const LangOptions & LO,
const TargetInfo & Target,
bool Warn,
bool isFreeBSDKPrintf )
static

Definition at line 71 of file PrintfFormatString.cpp.

References ConversionSpecifier::AArg, ConversionSpecifier::aArg, ConversionSpecifier::BArg, ConversionSpecifier::bArg, c, ConversionSpecifier::CArg, ConversionSpecifier::cArg, clang::analyze_format_string::ConversionSpecifier::consumesDataArgument(), ConversionSpecifier::DArg, ConversionSpecifier::dArg, ConversionSpecifier::EArg, ConversionSpecifier::eArg, ConversionSpecifier::FArg, ConversionSpecifier::fArg, ConversionSpecifier::FreeBSDbArg, ConversionSpecifier::FreeBSDDArg, ConversionSpecifier::FreeBSDrArg, ConversionSpecifier::FreeBSDyArg, ConversionSpecifier::GArg, ConversionSpecifier::gArg, clang::analyze_format_string::FormatStringHandler::HandleIncompleteSpecifier(), clang::analyze_format_string::FormatStringHandler::handleInvalidMaskType(), clang::analyze_format_string::FormatStringHandler::HandleInvalidPrintfConversionSpecifier(), clang::analyze_format_string::FormatStringHandler::HandleNullChar(), clang::analyze_format_string::FormatStringHandler::HandleObjCFlagsWithNonObjCConversion(), ConversionSpecifier::iArg, ConversionSpecifier::InvalidSpecifier, clang::analyze_os_log::OSLogBufferItem::IsPrivate, clang::analyze_os_log::OSLogBufferItem::IsPublic, clang::analyze_os_log::OSLogBufferItem::IsSensitive, ConversionSpecifier::KArg, ConversionSpecifier::kArg, clang::Match, ConversionSpecifier::nArg, ConversionSpecifier::OArg, ConversionSpecifier::oArg, ConversionSpecifier::ObjCObjArg, ConversionSpecifier::PArg, ConversionSpecifier::pArg, clang::analyze_format_string::ParseArgPosition(), clang::analyze_format_string::ParseFieldWidth(), clang::analyze_format_string::ParseLengthModifier(), ParseObjCFlags(), ParsePrecision(), clang::analyze_format_string::ParseUTF8InvalidSpecifier(), clang::analyze_format_string::ParseVectorModifier(), ConversionSpecifier::PercentArg, ConversionSpecifier::PrintErrno, ConversionSpecifier::RArg, ConversionSpecifier::rArg, ConversionSpecifier::SArg, ConversionSpecifier::sArg, clang::analyze_format_string::FormatSpecifier::setArgIndex(), clang::analyze_printf::PrintfSpecifier::setConversionSpecifier(), clang::analyze_format_string::ConversionSpecifier::setEndScanList(), clang::analyze_printf::PrintfSpecifier::setHasAlternativeForm(), clang::analyze_printf::PrintfSpecifier::setHasLeadingZeros(), clang::analyze_printf::PrintfSpecifier::setHasPlusPrefix(), clang::analyze_printf::PrintfSpecifier::setHasSpacePrefix(), clang::analyze_printf::PrintfSpecifier::setHasThousandsGrouping(), clang::analyze_printf::PrintfSpecifier::setIsLeftJustified(), clang::analyze_printf::PrintfSpecifier::setIsPrivate(), clang::analyze_printf::PrintfSpecifier::setIsPublic(), clang::analyze_printf::PrintfSpecifier::setIsSensitive(), clang::analyze_printf::PrintfSpecifier::setMaskType(), ConversionSpecifier::UArg, ConversionSpecifier::uArg, clang::analyze_printf::PrintfSpecifier::usesPositionalArg(), ConversionSpecifier::XArg, ConversionSpecifier::xArg, and ConversionSpecifier::ZArg.

Referenced by clang::analyze_format_string::parseFormatStringHasFormattingSpecifiers(), clang::analyze_format_string::ParseFormatStringHasSArg(), and clang::analyze_format_string::ParsePrintfString().