|
clang
5.0.0
|
#include "clang/Analysis/Analyses/FormatString.h"
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 | setUsesPositionalArg () |
| const PrintfConversionSpecifier & | getConversionSpecifier () const |
| void | setPrecision (const OptionalAmount &Amt) |
| const OptionalAmount & | getPrecision () 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. More... | |
| const OptionalFlag & | hasThousandsGrouping () const |
| const OptionalFlag & | isLeftJustified () const |
| const OptionalFlag & | hasPlusPrefix () const |
| const OptionalFlag & | hasAlternativeForm () const |
| const OptionalFlag & | hasLeadingZeros () const |
| const OptionalFlag & | hasSpacePrefix () const |
| const OptionalFlag & | hasObjCTechnicalTerm () const |
| const OptionalFlag & | isPrivate () const |
| const OptionalFlag & | isPublic () const |
| bool | usesPositionalArg () const |
| 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. More... | |
| 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 LengthModifier & | getLengthModifier () const |
| const OptionalAmount & | getFieldWidth () const |
| void | setFieldWidth (const OptionalAmount &Amt) |
| bool | usesPositionalArg () const |
| bool | hasValidLengthModifier (const TargetInfo &Target) const |
| bool | hasStandardLengthModifier () const |
| Optional< LengthModifier > | getCorrectedLengthModifier () 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 (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. More... | |
Additional Inherited Members | |
Protected Attributes inherited from clang::analyze_format_string::FormatSpecifier | |
| LengthModifier | LM |
| OptionalAmount | FieldWidth |
| ConversionSpecifier | CS |
| bool | UsesPositionalArg |
| Positional arguments, an IEEE extension: IEEE Std 1003.1, 2004 Edition http://www.opengroup.org/onlinepubs/009695399/functions/printf.html. More... | |
| unsigned | argIndex |
Definition at line 445 of file FormatString.h.
|
inline |
Definition at line 457 of file FormatString.h.
|
inline |
Definition at line 509 of file FormatString.h.
References clang::analyze_format_string::ConversionSpecifier::consumesDataArgument(), and getConversionSpecifier().
| 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 593 of file PrintfFormatString.cpp.
References clang::analyze_format_string::LengthModifier::AsChar, clang::analyze_format_string::LengthModifier::AsLong, clang::analyze_format_string::LengthModifier::AsLongDouble, clang::analyze_format_string::LengthModifier::AsLongLong, clang::analyze_format_string::LengthModifier::AsShort, clang::analyze_format_string::LengthModifier::AsWideChar, clang::analyze_format_string::ConversionSpecifier::cArg, clang::analyze_format_string::ConversionSpecifier::dArg, clang::analyze_format_string::ConversionSpecifier::DArg, clang::analyze_format_string::ConversionSpecifier::fArg, clang::Type::getAs(), clang::BuiltinType::getKind(), clang::Type::getPointeeType(), clang::ASTContext::getTargetInfo(), clang::analyze_format_string::ConversionSpecifier::iArg, clang::Type::isAnyCharacterType(), clang::Type::isCharType(), clang::Type::isObjCRetainableType(), clang::Type::isPointerType(), clang::Type::isRealFloatingType(), clang::Type::isSignedIntegerType(), clang::Type::isUnsignedIntegerType(), clang::Type::isWideCharType(), clang::analyze_format_string::ConversionSpecifier::nArg, clang::analyze_format_string::LengthModifier::None, clang::analyze_format_string::OptionalAmount::NotSpecified, clang::analyze_format_string::ConversionSpecifier::ObjCObjArg, clang::analyze_format_string::ConversionSpecifier::sArg, clang::analyze_format_string::ConversionSpecifier::uArg, and clang::analyze_format_string::ConversionSpecifier::UArg.
| 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 427 of file PrintfFormatString.cpp.
References clang::analyze_format_string::ArgType::AnyCharTy, clang::analyze_format_string::LengthModifier::AsAllocate, clang::analyze_format_string::LengthModifier::AsChar, 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::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::AsSizeT, clang::analyze_format_string::LengthModifier::AsWide, clang::analyze_format_string::LengthModifier::AsWideChar, clang::analyze_format_string::ConversionSpecifier::cArg, clang::analyze_format_string::ConversionSpecifier::CArg, clang::analyze_format_string::ConversionSpecifier::consumesDataArgument(), clang::analyze_format_string::ArgType::CPointerTy, clang::analyze_format_string::ArgType::CStrTy, clang::ASTContext::DoubleTy, clang::ASTContext::getIntMaxType(), clang::analyze_format_string::ConversionSpecifier::getKind(), clang::ASTContext::getPointerDiffType(), clang::ASTContext::getPointerType(), clang::ASTContext::getSignedSizeType(), clang::ASTContext::getSizeType(), clang::ASTContext::getTargetInfo(), clang::TargetInfo::getTriple(), clang::ASTContext::getUIntMaxType(), clang::ASTContext::IntTy, clang::analyze_format_string::ArgType::Invalid(), clang::analyze_printf::PrintfConversionSpecifier::isDoubleArg(), clang::analyze_format_string::ConversionSpecifier::isIntArg(), clang::analyze_format_string::ConversionSpecifier::isUIntArg(), clang::ASTContext::LongDoubleTy, clang::ASTContext::LongLongTy, clang::ASTContext::LongTy, clang::analyze_format_string::ConversionSpecifier::nArg, clang::analyze_format_string::LengthModifier::None, clang::analyze_format_string::ConversionSpecifier::ObjCObjArg, clang::analyze_format_string::ArgType::ObjCPointerTy, clang::analyze_format_string::ConversionSpecifier::pArg, clang::analyze_format_string::ConversionSpecifier::PArg, clang::analyze_format_string::ArgType::PtrTo(), clang::analyze_format_string::ConversionSpecifier::sArg, clang::analyze_format_string::ConversionSpecifier::SArg, clang::ASTContext::ShortTy, clang::ASTContext::SignedCharTy, clang::ASTContext::UnsignedCharTy, clang::ASTContext::UnsignedIntTy, clang::ASTContext::UnsignedLongLongTy, clang::ASTContext::UnsignedLongTy, clang::ASTContext::UnsignedShortTy, clang::analyze_format_string::ArgType::WCStrTy, clang::ASTContext::WideCharTy, clang::analyze_format_string::ArgType::WIntTy, and clang::CanQual< T >::withConst().
|
inline |
Definition at line 496 of file FormatString.h.
References clang::analyze_format_string::FormatSpecifier::CS.
Referenced by consumesDataArgument(), and clang::analyze_format_string::ParseFormatStringHasSArg().
|
inline |
Definition at line 505 of file FormatString.h.
|
inline |
Definition at line 525 of file FormatString.h.
|
inline |
Definition at line 526 of file FormatString.h.
|
inline |
Definition at line 528 of file FormatString.h.
|
inline |
Definition at line 524 of file FormatString.h.
|
inline |
Definition at line 527 of file FormatString.h.
|
inline |
Definition at line 520 of file FormatString.h.
| bool PrintfSpecifier::hasValidAlternativeForm | ( | ) | const |
Definition at line 818 of file PrintfFormatString.cpp.
References clang::analyze_format_string::ConversionSpecifier::aArg, clang::analyze_format_string::ConversionSpecifier::AArg, 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::oArg, clang::analyze_format_string::ConversionSpecifier::OArg, clang::analyze_format_string::ConversionSpecifier::xArg, and clang::analyze_format_string::ConversionSpecifier::XArg.
| bool PrintfSpecifier::hasValidFieldWidth | ( | ) | const |
Definition at line 970 of file PrintfFormatString.cpp.
References clang::analyze_format_string::ConversionSpecifier::nArg, and clang::analyze_format_string::OptionalAmount::NotSpecified.
| bool PrintfSpecifier::hasValidLeadingZeros | ( | ) | const |
Definition at line 845 of file PrintfFormatString.cpp.
References clang::analyze_format_string::ConversionSpecifier::aArg, clang::analyze_format_string::ConversionSpecifier::AArg, 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, clang::analyze_format_string::ConversionSpecifier::oArg, clang::analyze_format_string::ConversionSpecifier::OArg, clang::analyze_format_string::ConversionSpecifier::uArg, clang::analyze_format_string::ConversionSpecifier::UArg, clang::analyze_format_string::ConversionSpecifier::xArg, and clang::analyze_format_string::ConversionSpecifier::XArg.
| bool PrintfSpecifier::hasValidLeftJustified | ( | ) | const |
Definition at line 903 of file PrintfFormatString.cpp.
References clang::analyze_format_string::ConversionSpecifier::nArg.
| bool PrintfSpecifier::hasValidPlusPrefix | ( | ) | const |
Definition at line 792 of file PrintfFormatString.cpp.
References clang::analyze_format_string::ConversionSpecifier::aArg, clang::analyze_format_string::ConversionSpecifier::AArg, 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, and clang::analyze_format_string::ConversionSpecifier::iArg.
| bool PrintfSpecifier::hasValidPrecision | ( | ) | const |
Definition at line 937 of file PrintfFormatString.cpp.
References clang::analyze_format_string::ConversionSpecifier::aArg, clang::analyze_format_string::ConversionSpecifier::AArg, 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, clang::analyze_format_string::OptionalAmount::NotSpecified, clang::analyze_format_string::ConversionSpecifier::oArg, clang::analyze_format_string::ConversionSpecifier::OArg, clang::analyze_format_string::ConversionSpecifier::PArg, clang::analyze_format_string::ConversionSpecifier::sArg, clang::analyze_format_string::ConversionSpecifier::uArg, clang::analyze_format_string::ConversionSpecifier::UArg, clang::analyze_format_string::ConversionSpecifier::xArg, and clang::analyze_format_string::ConversionSpecifier::XArg.
| bool PrintfSpecifier::hasValidSpacePrefix | ( | ) | const |
Definition at line 877 of file PrintfFormatString.cpp.
References clang::analyze_format_string::ConversionSpecifier::aArg, clang::analyze_format_string::ConversionSpecifier::AArg, 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, and clang::analyze_format_string::ConversionSpecifier::iArg.
| bool PrintfSpecifier::hasValidThousandsGroupingPrefix | ( | ) | const |
Definition at line 917 of file PrintfFormatString.cpp.
References clang::analyze_format_string::ConversionSpecifier::dArg, clang::analyze_format_string::ConversionSpecifier::DArg, clang::analyze_format_string::ConversionSpecifier::fArg, clang::analyze_format_string::ConversionSpecifier::FArg, clang::analyze_format_string::ConversionSpecifier::gArg, clang::analyze_format_string::ConversionSpecifier::GArg, clang::analyze_format_string::ConversionSpecifier::iArg, clang::analyze_format_string::ConversionSpecifier::uArg, and clang::analyze_format_string::ConversionSpecifier::UArg.
|
inline |
Definition at line 523 of file FormatString.h.
|
inline |
Definition at line 529 of file FormatString.h.
|
inline |
Definition at line 530 of file FormatString.h.
|
static |
|
inline |
Definition at line 466 of file FormatString.h.
References clang::analyze_format_string::FormatSpecifier::CS.
|
inline |
Definition at line 481 of file FormatString.h.
|
inline |
Definition at line 484 of file FormatString.h.
|
inline |
Definition at line 487 of file FormatString.h.
Referenced by ParseObjCFlags().
|
inline |
Definition at line 475 of file FormatString.h.
|
inline |
Definition at line 478 of file FormatString.h.
|
inline |
Definition at line 469 of file FormatString.h.
|
inline |
Definition at line 472 of file FormatString.h.
|
inline |
Definition at line 490 of file FormatString.h.
|
inline |
Definition at line 491 of file FormatString.h.
|
inline |
Definition at line 500 of file FormatString.h.
Referenced by ParsePrecision().
|
inline |
Definition at line 492 of file FormatString.h.
References clang::analyze_format_string::FormatSpecifier::UsesPositionalArg.
| void PrintfSpecifier::toString | ( | raw_ostream & | os | ) | const |
Definition at line 765 of file PrintfFormatString.cpp.
|
inline |
Definition at line 531 of file FormatString.h.
References clang::analyze_format_string::FormatSpecifier::UsesPositionalArg.
1.8.6