#include "FormatStringParsing.h"
#include "clang/AST/FormatString.h"
#include "clang/AST/OSLog.h"
#include "clang/Basic/TargetInfo.h"
#include "llvm/Support/Regex.h"
ArgType;
FormatStringHandler;
LengthModifier;
OptionalAmount;
ConversionSpecifier;
PrintfSpecifier;
usingnamespaceclang;
PrintfSpecifierResult;
ParseNonPositionAmount;
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) { … }
bool clang::analyze_format_string::ParsePrintfString(FormatStringHandler &H,
const char *I,
const char *E,
const LangOptions &LO,
const TargetInfo &Target,
bool isFreeBSDKPrintf) { … }
bool clang::analyze_format_string::ParseFormatStringHasSArg(const char *I,
const char *E,
const LangOptions &LO,
const TargetInfo &Target) { … }
bool clang::analyze_format_string::parseFormatStringHasFormattingSpecifiers(
const char *Begin, const char *End, const LangOptions &LO,
const TargetInfo &Target) { … }
ArgType PrintfSpecifier::getScalarArgType(ASTContext &Ctx,
bool IsObjCLiteral) const { … }
ArgType PrintfSpecifier::getArgType(ASTContext &Ctx,
bool IsObjCLiteral) const { … }
bool PrintfSpecifier::fixType(QualType QT, const LangOptions &LangOpt,
ASTContext &Ctx, bool IsObjCLiteral) { … }
void PrintfSpecifier::toString(raw_ostream &os) const { … }
bool PrintfSpecifier::hasValidPlusPrefix() const { … }
bool PrintfSpecifier::hasValidAlternativeForm() const { … }
bool PrintfSpecifier::hasValidLeadingZeros() const { … }
bool PrintfSpecifier::hasValidSpacePrefix() const { … }
bool PrintfSpecifier::hasValidLeftJustified() const { … }
bool PrintfSpecifier::hasValidThousandsGroupingPrefix() const { … }
bool PrintfSpecifier::hasValidPrecision() const { … }
bool PrintfSpecifier::hasValidFieldWidth() const { … }