33 const char *&Beg,
const char *
E) {
35 const char *start = I - 1;
36 UpdateOnReturn <const char*> UpdateBeg(Beg, I);
53 if (I + 1 !=
E && I[0] ==
'^' && I[1] ==
']') {
84 const char *Start =
nullptr;
85 UpdateOnReturn <const char*> UpdateBeg(Beg, I);
88 for ( ; I !=
E ; ++I) {
112 if (ParseArgPosition(H, FS, Start, I,
E))
123 FS.setSuppressAssignment(I);
135 FS.setFieldWidth(Amt);
145 if (ParseLengthModifier(FS, I,
E, LO,
true) && I ==
E) {
158 const char *conversionPosition = I++;
160 switch (*conversionPosition) {
189 if (
Target.getTriple().isOSDarwin())
193 if (
Target.getTriple().isOSDarwin())
197 if (
Target.getTriple().isOSDarwin())
206 FS.setConversionSpecifier(CS);
208 && !FS.usesPositionalArg())
209 FS.setArgIndex(argIndex++);
215 unsigned Len = I - Beg;
216 if (ParseUTF8InvalidSpecifier(Beg,
E, Len)) {
218 FS.setConversionSpecifier(CS);
234 case ConversionSpecifier::dArg:
235 case ConversionSpecifier::DArg:
236 case ConversionSpecifier::iArg:
268 llvm_unreachable(
"Unsupported LengthModifier Type");
271 case ConversionSpecifier::bArg:
272 case ConversionSpecifier::oArg:
273 case ConversionSpecifier::OArg:
274 case ConversionSpecifier::uArg:
275 case ConversionSpecifier::UArg:
276 case ConversionSpecifier::xArg:
277 case ConversionSpecifier::XArg:
310 llvm_unreachable(
"Unsupported LengthModifier Type");
313 case ConversionSpecifier::aArg:
314 case ConversionSpecifier::AArg:
315 case ConversionSpecifier::eArg:
316 case ConversionSpecifier::EArg:
317 case ConversionSpecifier::fArg:
318 case ConversionSpecifier::FArg:
319 case ConversionSpecifier::gArg:
320 case ConversionSpecifier::GArg:
333 case ConversionSpecifier::cArg:
334 case ConversionSpecifier::sArg:
335 case ConversionSpecifier::ScanListArg:
352 case ConversionSpecifier::CArg:
353 case ConversionSpecifier::SArg:
371 case ConversionSpecifier::pArg:
375 case ConversionSpecifier::nArg:
419 if (
CS.
getKind() == ConversionSpecifier::nArg)
430 if (!ETy->getDecl()->isComplete())
432 PT = ETy->getDecl()->getIntegerType();
451 CAT->getZExtSize() - 1,
"", 0,
false);
459 case BuiltinType::UInt:
460 case BuiltinType::Int:
461 case BuiltinType::Float:
466 case BuiltinType::Char_U:
467 case BuiltinType::UChar:
468 case BuiltinType::Char_S:
469 case BuiltinType::SChar:
474 case BuiltinType::Short:
475 case BuiltinType::UShort:
480 case BuiltinType::Long:
481 case BuiltinType::ULong:
482 case BuiltinType::Double:
487 case BuiltinType::LongLong:
488 case BuiltinType::ULongLong:
493 case BuiltinType::LongDouble:
503 if (LangOpt.C99 || LangOpt.CPlusPlus11)
521 llvm_unreachable(
"Unexpected type");
531 if (SuppressAssignment)
545 unsigned argIndex = 0;
565 assert(I ==
E &&
"Format string not exhausted");
llvm::MachO::Target Target
__device__ __2f16 float c
Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...
const ConstantArrayType * getAsConstantArrayType(QualType T) const
QualType getUnsignedPointerDiffType() const
Return the unique unsigned counterpart of "ptrdiff_t" integer type.
CanQualType getIntMaxType() const
Return the unique type for "intmax_t" (C99 7.18.1.5), defined in <stdint.h>.
QualType getPointerDiffType() const
Return the unique type for "ptrdiff_t" (C99 7.17) defined in <stddef.h>.
CanQualType UnsignedLongTy
CanQualType getSizeType() const
Return the unique type for "size_t" (C99 7.17), defined in <stddef.h>.
CanQualType UnsignedCharTy
CanQualType UnsignedIntTy
CanQualType UnsignedLongLongTy
CanQualType UnsignedShortTy
const TargetInfo & getTargetInfo() const
QualType getWideCharType() const
Return the type of wide characters.
CanQualType getSignedSizeType() const
Return the unique signed counterpart of the integer type corresponding to size_t.
CanQualType getUIntMaxType() const
Return the unique type for "uintmax_t" (C99 7.18.1.5), defined in <stdint.h>.
This class is used for builtin types like 'int'.
Represents the canonical version of C arrays with a specified constant size.
A helper class that allows the use of isa/cast/dyncast to detect TagType objects of enums.
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.
const llvm::Triple & getTriple() const
Returns the target triple of the primary target.
bool isSignedIntegerType() const
Return true if this is an integer type that is signed, according to C99 6.2.5p4 [char,...
bool isPointerType() const
QualType getPointeeType() const
If this is a pointer, ObjC object pointer, or block pointer, this returns the respective pointee.
bool isAnyCharacterType() const
Determine whether this type is any of the built-in character types.
bool isRealFloatingType() const
Floating point categories.
bool isWideCharType() const
bool isUnsignedIntegerType() const
Return true if this is an integer type that is unsigned, according to C99 6.2.5p6 [which returns true...
const T * getAs() const
Member-template getAs<specific type>'.
bool fixType(QualType QT, QualType RawQT, const LangOptions &LangOpt, ASTContext &Ctx)
void toString(raw_ostream &os) const
const ScanfConversionSpecifier & getConversionSpecifier() const
ArgType getArgType(ASTContext &Ctx) const
Defines the clang::TargetInfo interface.
Pieces specific to fscanf format strings.
The JSON file list parser is used to communicate input to InstallAPI.