clang: include/clang/AST/FormatString.h Source File (original) (raw)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18#ifndef LLVM_CLANG_AST_FORMATSTRING_H

19#define LLVM_CLANG_AST_FORMATSTRING_H

20

22#include

23

25

27

28

29

31

32

33

35public:

37 : representation(Representation), flag(false) {}

38 bool isSet() const { return flag; }

39 void set() { flag = true; }

40 void clear() { flag = false; }

42 assert(position);

43 flag = true;

44 this->position = position;

45 }

47 assert(position);

48 return position;

49 }

50 const char *toString() const { return representation; }

51

52

53 explicit operator bool() const { return flag; }

55 flag = rhs;

56 return *this;

57 }

58private:

59 const char *representation;

60 const char *position;

61 bool flag;

62};

63

64

66public:

87

91 : Position(pos), kind(k) {}

92

96

98 switch (kind) {

99 default:

100 return 1;

103 return 2;

106 return 3;

108 return 0;

109 }

110 }

111

114

115 const char *toString() const;

116

117private:

118 const char *Position;

119 Kind kind;

120};

121

123public:

126

131

134

137

146

157

164

165

166

167

169

170

171

173

174

175 kArg,

176 KArg,

177 rArg,

178 RArg,

181

182

186

187

192

193

195

198

199

203 };

204

208

211

215

219

221 switch (kind) {

224 return false;

226 return false;

228 return false;

229 default:

230 return true;

231 }

232 }

233

240

251

252 const char *toString() const;

253

255

257

258protected:

263};

264

266public:

269

270

272

273

275

276

278

279

281

282

284

285

287

289

290

292 };

293

294private:

295 Kind K;

297 const char *Name = nullptr;

298 bool Ptr = false;

299

300

301

302 enum class TypeKind { DontCare, SizeT, PtrdiffT };

303 TypeKind TK = TypeKind::DontCare;

304

305public:

309

312

313 bool isSizeT() const { return TK == TypeKind::SizeT; }

314

315 bool isPtrdiffT() const { return TK == TypeKind::PtrdiffT; }

316

317

319 assert(A.K >= InvalidTy && "ArgType cannot be pointer to invalid/unknown");

321 Res.Ptr = true;

322 return Res;

323 }

324

325

328 Res.TK = TypeKind::SizeT;

329 return Res;

330 }

331

332

333

336 Res.TK = TypeKind::PtrdiffT;

337 return Res;

338 }

339

342

344

346

348};

349

351public:

353

355 unsigned amount,

356 const char *amountStart,

357 unsigned amountLength,

359 : start(amountStart), length(amountLength), hs(howSpecified), amt(amount),

361

364 UsesPositionalArg(false), UsesDotPrefix(false) {}

365

368 UsesPositionalArg(false), UsesDotPrefix(false) {}

369

373

376

378

383

388

390

391 return start - UsesDotPrefix;

392 }

393

396 return length + UsesDotPrefix;

397 }

398

400

401 void toString(raw_ostream &os) const;

402

406 return amt + 1;

407 }

408

411

412private:

413 const char *start;

415 HowSpecified hs;

416 unsigned amt;

417 bool UsesPositionalArg : 1;

418 bool UsesDotPrefix;

419};

420

421

423protected:

428

429

430

431

434public:

438

442

444

448

452

456

460

464

468

472

476

478

481

483

485

487

489

490

491

494};

495

496}

497

498

499

500

502

505public:

508

511

515

519};

520

525

527 OptionalFlag HasThousandsGrouping;

538 StringRef MaskType;

539

540 ArgType getScalarArgType(ASTContext &Ctx, bool IsObjCLiteral) const;

541

542public:

545 IsLeftJustified("-"), HasPlusPrefix("+"), HasSpacePrefix(" "),

546 HasAlternativeForm("#"), HasLeadingZeroes("0"),

547 HasObjCTechnicalTerm("tt"), IsPrivate("private"), IsPublic("public"),

548 IsSensitive("sensitive") {}

549

551

552

557 HasThousandsGrouping.setPosition(position);

558 }

560 IsLeftJustified.setPosition(position);

561 }

563 HasPlusPrefix.setPosition(position);

564 }

566 HasSpacePrefix.setPosition(position);

567 }

569 HasAlternativeForm.setPosition(position);

570 }

572 HasLeadingZeroes.setPosition(position);

573 }

575 HasObjCTechnicalTerm.setPosition(position);

576 }

577 void setIsPrivate(const char *position) { IsPrivate.setPosition(position); }

578 void setIsPublic(const char *position) { IsPublic.setPosition(position); }

580 IsSensitive.setPosition(position);

581 }

583

584

585

589

591 Precision = Amt;

593 }

594

596 return Precision;

597 }

598

602

603

604

605

606

607

609

611 return HasThousandsGrouping;

612 }

623

626

627

628

629

631 bool IsObjCLiteral);

632

633 void toString(raw_ostream &os) const;

634

635

642

645};

646}

647

648

649

650

652

666

671

674public:

677 SuppressAssignment("*") {}

678

680 SuppressAssignment.setPosition(position);

681 }

682

684 return SuppressAssignment;

685 }

686

690

694

696 return CS.consumesDataArgument() && !SuppressAssignment;

697 }

698

700

703

704 void toString(raw_ostream &os) const;

705

707};

708

709}

710

711

712

713

715

717

719public:

722

724

725 virtual void HandlePosition(const char *startPos, unsigned posLen) {}

726

729

731

733 unsigned specifierLen) {}

734

736 unsigned flagsLen) {}

737

740

742 const char *flagsEnd,

743 const char *conversionPosition) {}

744

745

748 const char *startSpecifier,

749 unsigned specifierLen) {

750 return true;

751 }

752

754 const char *startSpecifier,

755 unsigned specifierLen,

757 return true;

758 }

759

760

762

763

764

767 const char *startSpecifier,

768 unsigned specifierLen) {

769 return true;

770 }

771

773 const char *startSpecifier,

774 unsigned specifierLen) {

775 return true;

776 }

777

779};

780

782 const char *beg, const char *end, const LangOptions &LO,

784

787

789 const char *beg, const char *end, const LangOptions &LO,

791

792

794 const char *End,

797

798}

799}

800#endif

ArgType(Kind K=UnknownTy, const char *N=nullptr)

Definition FormatString.h:306

Definition FormatString.h:718

Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...

Keeps track of the various options that can be enabled, which controls the dialect of C or C++ that i...

A (possibly-)qualified type.

Exposes information about the current target.

Definition FormatString.h:265

bool isPtrdiffT() const

Definition FormatString.h:315

Kind

Definition FormatString.h:267

@ AnyCharTy

Definition FormatString.h:268

@ InvalidTy

Definition FormatString.h:267

@ CPointerTy

Definition FormatString.h:267

@ SpecificTy

Definition FormatString.h:267

@ CStrTy

Definition FormatString.h:268

@ ObjCPointerTy

Definition FormatString.h:267

@ UnknownTy

Definition FormatString.h:267

@ WCStrTy

Definition FormatString.h:268

@ WIntTy

Definition FormatString.h:268

static ArgType makePtrdiffT(const ArgType &A)

Create an ArgType which corresponds to the ptrdiff_t/unsigned ptrdiff_t type.

Definition FormatString.h:334

static ArgType Invalid()

Definition FormatString.h:310

MatchKind

How well a given conversion specifier matches its argument.

Definition FormatString.h:271

@ NoMatch

The conversion specifier and the argument types are incompatible.

Definition FormatString.h:274

@ NoMatchPedantic

The conversion specifier and the argument type are disallowed by the C standard, but are in practice ...

Definition FormatString.h:286

@ Match

The conversion specifier and the argument type are compatible.

Definition FormatString.h:277

@ MatchPromotion

The conversion specifier and the argument type are compatible because of default argument promotions.

Definition FormatString.h:280

@ NoMatchSignedness

The conversion specifier and the argument type have different sign.

Definition FormatString.h:288

@ NoMatchTypeConfusion

The conversion specifier and the argument type are compatible, but still seems likely to be an error.

Definition FormatString.h:291

@ NoMatchPromotionTypeConfusion

The conversion specifier and the argument type are compatible but still seems likely to be an error.

Definition FormatString.h:283

static ArgType PtrTo(const ArgType &A)

Create an ArgType which corresponds to the type pointer to A.

Definition FormatString.h:318

ArgType makeVectorType(ASTContext &C, unsigned NumElts) const

MatchKind matchesArgType(ASTContext &C, const ArgType &other) const

QualType getRepresentativeType(ASTContext &C) const

bool isValid() const

Definition FormatString.h:311

std::string getRepresentativeTypeName(ASTContext &C) const

bool isSizeT() const

Definition FormatString.h:313

ArgType(QualType T, const char *N=nullptr)

Definition FormatString.h:307

static ArgType makeSizeT(const ArgType &A)

Create an ArgType which corresponds to the size_t/ssize_t type.

Definition FormatString.h:326

ArgType(CanQualType T)

Definition FormatString.h:308

ArgType(Kind K=UnknownTy, const char *N=nullptr)

Definition FormatString.h:306

MatchKind matchesType(ASTContext &C, QualType argTy) const

Definition FormatString.h:122

void setKind(Kind k)

Definition FormatString.h:235

Kind

Definition FormatString.h:124

@ cArg

Definition FormatString.h:127

@ bArg

Definition FormatString.h:132

@ pArg

Definition FormatString.h:159

@ SArg

Definition FormatString.h:163

@ InvalidSpecifier

Definition FormatString.h:125

@ uArg

Definition FormatString.h:140

@ ZArg

Definition FormatString.h:172

@ ObjCBeg

Definition FormatString.h:184

@ RArg

Definition FormatString.h:178

@ BArg

Definition FormatString.h:133

@ FreeBSDDArg

Definition FormatString.h:189

@ UIntArgBeg

Definition FormatString.h:144

@ FreeBSDrArg

Definition FormatString.h:190

@ kArg

Definition FormatString.h:175

@ PrintfConvEnd

Definition FormatString.h:197

@ rArg

Definition FormatString.h:177

@ UIntArgEnd

Definition FormatString.h:145

@ iArg

Definition FormatString.h:130

@ ScanfConvBeg

Definition FormatString.h:201

@ FArg

Definition FormatString.h:148

@ KArg

Definition FormatString.h:176

@ FixedPointArgEnd

Definition FormatString.h:180

@ fArg

Definition FormatString.h:147

@ GArg

Definition FormatString.h:152

@ FixedPointArgBeg

Definition FormatString.h:179

@ ScanfConvEnd

Definition FormatString.h:202

@ nArg

Definition FormatString.h:160

@ DoubleArgEnd

Definition FormatString.h:156

@ gArg

Definition FormatString.h:151

@ FreeBSDyArg

Definition FormatString.h:191

@ aArg

Definition FormatString.h:153

@ ObjCObjArg

Definition FormatString.h:183

@ XArg

Definition FormatString.h:143

@ eArg

Definition FormatString.h:149

@ PArg

Definition FormatString.h:168

@ OArg

Definition FormatString.h:139

@ CArg

Definition FormatString.h:162

@ IntArgEnd

Definition FormatString.h:136

@ ScanListArg

Definition FormatString.h:200

@ AArg

Definition FormatString.h:154

@ dArg

Definition FormatString.h:128

@ FreeBSDbArg

Definition FormatString.h:188

@ DArg

Definition FormatString.h:129

@ PercentArg

Definition FormatString.h:161

@ xArg

Definition FormatString.h:142

@ sArg

Definition FormatString.h:158

@ PrintErrno

Definition FormatString.h:194

@ DoubleArgBeg

Definition FormatString.h:155

@ PrintfConvBeg

Definition FormatString.h:196

@ IntArgBeg

Definition FormatString.h:135

@ UArg

Definition FormatString.h:141

@ EArg

Definition FormatString.h:150

@ ObjCEnd

Definition FormatString.h:185

@ oArg

Definition FormatString.h:138

bool isUIntArg() const

Definition FormatString.h:243

ConversionSpecifier(bool isPrintf=true)

Definition FormatString.h:205

std::optional< ConversionSpecifier > getStandardSpecifier() const

bool IsPrintf

Definition FormatString.h:259

Kind kind

Definition FormatString.h:262

unsigned getLength() const

Definition FormatString.h:236

void setEndScanList(const char *pos)

Definition FormatString.h:239

StringRef getCharacters() const

Definition FormatString.h:216

bool isPrintfKind() const

Definition FormatString.h:254

const char * EndScanList

Definition FormatString.h:261

bool isFixedPointArg() const

Definition FormatString.h:248

bool isAnyIntArg() const

Definition FormatString.h:244

const char * getStart() const

Definition FormatString.h:212

const char * Position

Definition FormatString.h:260

const char * toString() const

bool consumesDataArgument() const

Definition FormatString.h:220

bool isDoubleArg() const

Definition FormatString.h:245

ConversionSpecifier(bool isPrintf, const char *pos, Kind k)

Definition FormatString.h:209

bool isIntArg() const

Definition FormatString.h:241

Kind getKind() const

Definition FormatString.h:234

Definition FormatString.h:422

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 L...

LengthModifier LM

Definition FormatString.h:424

unsigned getArgIndex() const

Definition FormatString.h:449

void setFieldWidth(const OptionalAmount &Amt)

Definition FormatString.h:473

unsigned getPositionalArgIndex() const

Definition FormatString.h:453

bool hasStandardLengthConversionCombination() const

void setUsesPositionalArg()

Definition FormatString.h:443

bool usesPositionalArg() const

Definition FormatString.h:477

const OptionalAmount & getFieldWidth() const

Definition FormatString.h:461

void setArgIndex(unsigned i)

Definition FormatString.h:445

void setLengthModifier(LengthModifier lm)

Definition FormatString.h:439

FormatSpecifier(bool isPrintf)

Definition FormatString.h:435

unsigned argIndex

Definition FormatString.h:433

bool hasStandardConversionSpecifier(const LangOptions &LangOpt) const

const LengthModifier & getLengthModifier() const

Definition FormatString.h:457

const OptionalAmount & getVectorNumElts() const

Definition FormatString.h:469

bool hasStandardLengthModifier() const

OptionalAmount VectorNumElts

Definition FormatString.h:427

ConversionSpecifier CS

Definition FormatString.h:426

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

bool UsesPositionalArg

Positional arguments, an IEEE extension: IEEE Std 1003.1, 2004 Edition http://www....

Definition FormatString.h:432

std::optional< LengthModifier > getCorrectedLengthModifier() const

void setVectorNumElts(const OptionalAmount &Amt)

Definition FormatString.h:465

OptionalAmount FieldWidth

Definition FormatString.h:425

virtual bool HandleInvalidPrintfConversionSpecifier(const analyze_printf::PrintfSpecifier &FS, const char *startSpecifier, unsigned specifierLen)

Definition FormatString.h:746

virtual void HandleObjCFlagsWithNonObjCConversion(const char *flagsStart, const char *flagsEnd, const char *conversionPosition)

Definition FormatString.h:741

virtual void HandleInvalidObjCModifierFlag(const char *startFlag, unsigned flagLen)

Definition FormatString.h:738

virtual void HandleIncompleteScanList(const char *start, const char *end)

Definition FormatString.h:778

virtual void HandleNullChar(const char *nullCharacter)

Definition FormatString.h:723

virtual void handleInvalidMaskType(StringRef MaskType)

Handle mask types whose sizes are not between one and eight bytes.

Definition FormatString.h:761

virtual ~FormatStringHandler()

virtual void HandlePosition(const char *startPos, unsigned posLen)

Definition FormatString.h:725

virtual bool HandlePrintfSpecifier(const analyze_printf::PrintfSpecifier &FS, const char *startSpecifier, unsigned specifierLen, const TargetInfo &Target)

Definition FormatString.h:753

virtual void HandleInvalidPosition(const char *startPos, unsigned posLen, PositionContext p)

Definition FormatString.h:727

virtual void HandleEmptyObjCModifierFlag(const char *startFlags, unsigned flagsLen)

Definition FormatString.h:735

virtual void HandleZeroPosition(const char *startPos, unsigned posLen)

Definition FormatString.h:730

virtual void HandleIncompleteSpecifier(const char *startSpecifier, unsigned specifierLen)

Definition FormatString.h:732

virtual bool HandleScanfSpecifier(const analyze_scanf::ScanfSpecifier &FS, const char *startSpecifier, unsigned specifierLen)

Definition FormatString.h:772

virtual bool HandleInvalidScanfConversionSpecifier(const analyze_scanf::ScanfSpecifier &FS, const char *startSpecifier, unsigned specifierLen)

Definition FormatString.h:765

FormatStringHandler()

Definition FormatString.h:720

Represents the length modifier in a format string in scanf/printf.

Definition FormatString.h:65

Kind getKind() const

Definition FormatString.h:112

LengthModifier()

Definition FormatString.h:88

LengthModifier(const char *pos, Kind k)

Definition FormatString.h:90

unsigned getLength() const

Definition FormatString.h:97

const char * toString() const

const char * getStart() const

Definition FormatString.h:93

void setKind(Kind k)

Definition FormatString.h:113

Kind

Definition FormatString.h:67

@ AsMAllocate

Definition FormatString.h:83

@ AsWideChar

Definition FormatString.h:85

@ AsShortLong

Definition FormatString.h:71

@ AsLong

Definition FormatString.h:72

@ AsLongDouble

Definition FormatString.h:81

@ AsChar

Definition FormatString.h:69

@ AsInt64

Definition FormatString.h:80

@ AsInt3264

Definition FormatString.h:79

@ AsWide

Definition FormatString.h:84

@ AsSizeT

Definition FormatString.h:76

@ AsAllocate

Definition FormatString.h:82

@ AsQuad

Definition FormatString.h:74

@ AsIntMax

Definition FormatString.h:75

@ AsShort

Definition FormatString.h:70

@ AsInt32

Definition FormatString.h:78

@ AsPtrDiff

Definition FormatString.h:77

@ None

Definition FormatString.h:68

@ AsLongLong

Definition FormatString.h:73

Definition FormatString.h:350

ArgType getArgType(ASTContext &Ctx) const

void toString(raw_ostream &os) const

const char * getStart() const

Definition FormatString.h:389

unsigned getArgIndex() const

Definition FormatString.h:379

bool usesDotPrefix() const

Definition FormatString.h:409

void setUsesDotPrefix()

Definition FormatString.h:410

bool hasDataArgument() const

Definition FormatString.h:377

HowSpecified getHowSpecified() const

Definition FormatString.h:374

bool usesPositionalArg() const

Definition FormatString.h:403

unsigned getConstantAmount() const

Definition FormatString.h:384

OptionalAmount(unsigned Amount)

Definition FormatString.h:366

bool isInvalid() const

Definition FormatString.h:370

OptionalAmount(HowSpecified howSpecified, unsigned amount, const char *amountStart, unsigned amountLength, bool usesPositionalArg)

Definition FormatString.h:354

unsigned getConstantLength() const

Definition FormatString.h:394

unsigned getPositionalArgIndex() const

Definition FormatString.h:404

HowSpecified

Definition FormatString.h:352

@ Invalid

Definition FormatString.h:352

@ Arg

Definition FormatString.h:352

@ Constant

Definition FormatString.h:352

@ NotSpecified

Definition FormatString.h:352

OptionalAmount(bool valid=true)

Definition FormatString.h:362

void setHowSpecified(HowSpecified h)

Definition FormatString.h:375

Class representing optional flags with location and representation information.

Definition FormatString.h:34

const char * toString() const

Definition FormatString.h:50

void set()

Definition FormatString.h:39

bool isSet() const

Definition FormatString.h:38

OptionalFlag(const char *Representation)

Definition FormatString.h:36

void setPosition(const char *position)

Definition FormatString.h:41

void clear()

Definition FormatString.h:40

OptionalFlag & operator=(const bool &rhs)

Definition FormatString.h:54

const char * getPosition() const

Definition FormatString.h:46

Definition FormatString.h:504

bool isDoubleArg() const

Definition FormatString.h:513

bool isObjCArg() const

Definition FormatString.h:512

PrintfConversionSpecifier(const char *pos, Kind k)

Definition FormatString.h:509

static bool classof(const analyze_format_string::ConversionSpecifier *CS)

Definition FormatString.h:516

PrintfConversionSpecifier()

Definition FormatString.h:506

Definition FormatString.h:526

const OptionalFlag & isPrivate() const

Definition FormatString.h:619

void setHasAlternativeForm(const char *position)

Definition FormatString.h:568

bool hasValidLeftJustified() const

void setIsSensitive(const char *position)

Definition FormatString.h:579

bool hasValidFieldWidth() const

void setMaskType(StringRef S)

Definition FormatString.h:625

void setHasSpacePrefix(const char *position)

Definition FormatString.h:565

bool hasValidSpacePrefix() const

void setHasThousandsGrouping(const char *position)

Definition FormatString.h:556

const OptionalAmount & getPrecision() const

Definition FormatString.h:595

static PrintfSpecifier Parse(const char *beg, const char *end)

const OptionalFlag & hasSpacePrefix() const

Definition FormatString.h:617

bool usesPositionalArg() const

Definition FormatString.h:622

void setIsLeftJustified(const char *position)

Definition FormatString.h:559

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.

StringRef getMaskType() const

Definition FormatString.h:624

const OptionalFlag & isSensitive() const

Definition FormatString.h:621

const OptionalFlag & isLeftJustified() const

Definition FormatString.h:613

bool hasValidPrecision() const

const OptionalFlag & hasLeadingZeros() const

Definition FormatString.h:616

const OptionalFlag & hasAlternativeForm() const

Definition FormatString.h:615

bool hasValidLeadingZeros() const

void setHasPlusPrefix(const char *position)

Definition FormatString.h:562

void setIsPrivate(const char *position)

Definition FormatString.h:577

PrintfSpecifier()

Definition FormatString.h:543

void toString(raw_ostream &os) const

const PrintfConversionSpecifier & getConversionSpecifier() const

Definition FormatString.h:586

void setHasLeadingZeros(const char *position)

Definition FormatString.h:571

const OptionalFlag & hasPlusPrefix() const

Definition FormatString.h:614

const OptionalFlag & hasThousandsGrouping() const

Definition FormatString.h:610

void setUsesPositionalArg()

Definition FormatString.h:582

bool hasValidThousandsGroupingPrefix() const

ArgType getArgType(ASTContext &Ctx, bool IsObjCLiteral) const

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

void setIsPublic(const char *position)

Definition FormatString.h:578

const OptionalFlag & hasObjCTechnicalTerm() const

Definition FormatString.h:618

void setPrecision(const OptionalAmount &Amt)

Definition FormatString.h:590

void setHasObjCTechnicalTerm(const char *position)

Definition FormatString.h:574

const OptionalFlag & isPublic() const

Definition FormatString.h:620

bool consumesDataArgument() const

Definition FormatString.h:599

bool hasValidPlusPrefix() const

void setConversionSpecifier(const PrintfConversionSpecifier &cs)

Definition FormatString.h:553

bool hasValidAlternativeForm() const

Definition FormatString.h:654

ScanfConversionSpecifier(const char *pos, Kind k)

Definition FormatString.h:659

ScanfConversionSpecifier()

Definition FormatString.h:656

static bool classof(const analyze_format_string::ConversionSpecifier *CS)

Definition FormatString.h:662

Definition FormatString.h:672

static ScanfSpecifier Parse(const char *beg, const char *end)

bool fixType(QualType QT, QualType RawQT, const LangOptions &LangOpt, ASTContext &Ctx)

const OptionalFlag & getSuppressAssignment() const

Definition FormatString.h:683

ScanfSpecifier()

Definition FormatString.h:675

void toString(raw_ostream &os) const

bool consumesDataArgument() const

Definition FormatString.h:695

void setConversionSpecifier(const ScanfConversionSpecifier &cs)

Definition FormatString.h:687

const ScanfConversionSpecifier & getConversionSpecifier() const

Definition FormatString.h:691

void setSuppressAssignment(const char *position)

Definition FormatString.h:679

ArgType getArgType(ASTContext &Ctx) const

Common components of both fprintf and fscanf format strings.

Definition FormatString.h:30

bool parseFormatStringHasFormattingSpecifiers(const char *Begin, const char *End, const LangOptions &LO, const TargetInfo &Target)

Return true if the given string has at least one formatting specifier.

bool ParsePrintfString(FormatStringHandler &H, const char *beg, const char *end, const LangOptions &LO, const TargetInfo &Target, bool isFreeBSDKPrintf)

PositionContext

Definition FormatString.h:716

@ FieldWidthPos

Definition FormatString.h:716

@ PrecisionPos

Definition FormatString.h:716

bool ParseScanfString(FormatStringHandler &H, const char *beg, const char *end, const LangOptions &LO, const TargetInfo &Target)

bool ParseFormatStringHasSArg(const char *beg, const char *end, const LangOptions &LO, const TargetInfo &Target)

Pieces specific to fprintf format strings.

Definition FormatString.h:501

Pieces specific to fscanf format strings.

Definition FormatString.h:651

The JSON file list parser is used to communicate input to InstallAPI.

CanQual< Type > CanQualType

Represents a canonical, potentially-qualified type.

nullptr

This class represents a compute construct, representing a 'Kind' of ‘parallel’, 'serial',...

const FunctionProtoType * T

U cast(CodeGen::Address addr)

float __ovld __cnfn length(float)

Return the length of vector p, i.e., sqrt(p.x2 + p.y 2 + ...)