/external/clang/include/clang/Lex/ |
H A D | LiteralSupport.h | 41 const char *const ThisTokBegin; member in class:clang::NumericLiteralParser 77 return SuffixBegin - ThisTokBegin;
|
/external/clang/lib/Lex/ |
H A D | LiteralSupport.cpp | 73 static unsigned ProcessCharEscape(const char *ThisTokBegin, argument 101 Diag(Diags, Features, Loc, ThisTokBegin, EscapeBegin, ThisTokBuf, 107 Diag(Diags, Features, Loc, ThisTokBegin, EscapeBegin, ThisTokBuf, 130 Diag(Diags, Features, Loc, ThisTokBegin, EscapeBegin, ThisTokBuf, 155 Diag(Diags, Features, Loc, ThisTokBegin, EscapeBegin, ThisTokBuf, 178 Diag(Diags, Features, Loc, ThisTokBegin, EscapeBegin, ThisTokBuf, 189 Diag(Diags, Features, Loc, ThisTokBegin, EscapeBegin, ThisTokBuf, 198 Diag(Diags, Features, Loc, ThisTokBegin, EscapeBegin, ThisTokBuf, 202 Diag(Diags, Features, Loc, ThisTokBegin, EscapeBegin, ThisTokBuf, 213 static bool ProcessUCNEscape(const char *ThisTokBegin, cons argument 285 MeasureUCNEscape(const char *ThisTokBegin, const char *&ThisTokBuf, const char *ThisTokEnd, unsigned CharByteWidth, const LangOptions &Features, bool &HadError) argument 320 EncodeUCNEscape(const char *ThisTokBegin, const char *&ThisTokBuf, const char *ThisTokEnd, char *&ResultBuf, bool &HadError, FullSourceLoc Loc, unsigned CharByteWidth, DiagnosticsEngine *Diags, const LangOptions &Features) argument 792 assert(C < radix && Ó); CharVal = C; OldVal = Val; Val *= RadixVal; OverflowOccurred |= Val.udiv(RadixVal) != OldVal; Val += CharVal; OverflowOccurred |= Val.ult(CharVal); } return OverflowOccurred; } llvm::APFloat::opStatus NumericLiteralParser::GetFloatValue(llvm::APFloat &Result) { using llvm::APFloat; unsigned n = std::min(SuffixBegin - ThisTokBegin, ThisTokEnd - ThisTokBegin); return Result.convertFromString(StringRef(ThisTokBegin, n), APFloat::rmNearestTiesToEven); } CharLiteralParser::CharLiteralParser(const char *begin, const char *end, SourceLocation Loc, Preprocessor &PP, tok::TokenKind kind) { HadError = false; Kind = kind; const char *TokBegin = begin; if (Kind != tok::char_constant) { ++begin; } assert(begin[0] == Ã && Ó); ++begin; if (end[-1] != Ã) { const char *UDSuffixEnd = end; do { --end; } while (end[-1] != Ã); UDSuffixBuf.assign(end, UDSuffixEnd); UDSuffixOffset = end - TokBegin; } assert(end != begin && Ó); --end; assert(PP.getTargetInfo().getCharWidth() == 8 && Ó); assert(PP.getTargetInfo().getIntWidth() <= 64 && (PP.getTargetInfo().getIntWidth() & 7) == 0 && Ó); assert(PP.getTargetInfo().getWCharWidth() <= 64 && Ó); SmallVector<uint32_t,4> codepoint_buffer; codepoint_buffer.resize(end-begin); uint32_t *buffer_begin = &codepoint_buffer.front(); uint32_t *buffer_end = buffer_begin + codepoint_buffer.size(); uint32_t largest_character_for_kind; if (tok::wide_char_constant == Kind) { largest_character_for_kind = 0xFFFFFFFFu >> (32-PP.getTargetInfo().getWCharWidth()); } else if (tok::utf16_char_constant == Kind) { largest_character_for_kind = 0xFFFF; } else if (tok::utf32_char_constant == Kind) { largest_character_for_kind = 0x10FFFF; } else { largest_character_for_kind = 0x7Fu; } while (begin!=end) { if (begin[0] != Ã) { char const *start = begin; do { ++begin; } while (begin != end && *begin != Ã); char const *tmp_in_start = start; uint32_t *tmp_out_start = buffer_begin; ConversionResult res = ConvertUTF8toUTF32(reinterpret_cast<UTF8 const **>(&start), reinterpret_cast<UTF8 const *>(begin), &buffer_begin,buffer_end,strictConversion); if (res!=conversionOK) { bool NoErrorOnBadEncoding = isAscii(); unsigned Msg = diag::err_bad_character_encoding; if (NoErrorOnBadEncoding) Msg = diag::warn_bad_character_encoding; PP.Diag(Loc, Msg); if (NoErrorOnBadEncoding) { start = tmp_in_start; buffer_begin = tmp_out_start; for ( ; start != begin; ++start, ++buffer_begin) *buffer_begin = static_cast<uint8_t>(*start); } else { HadError = true; } } else { for (; tmp_out_start <buffer_begin; ++tmp_out_start) { if (*tmp_out_start > largest_character_for_kind) { HadError = true; PP.Diag(Loc, diag::err_character_too_large); } } } continue; } if (begin[1] == Ã || begin[1] == Ã) { unsigned short UcnLen = 0; if (!ProcessUCNEscape(TokBegin, begin, end, *buffer_begin, UcnLen, FullSourceLoc(Loc, PP.getSourceManager()), &PP.getDiagnostics(), PP.getLangOpts(), true)) { HadError = true; } else if (*buffer_begin > largest_character_for_kind) argument [all...] |
/external/clang/lib/Parse/ |
H A D | ParseDecl.cpp | 554 const char *ThisTokBegin = &Buffer[0]; local 558 unsigned ActualLength = PP.getSpelling(Tok, ThisTokBegin, &Invalid); 565 while (AfterMajor < ActualLength && isdigit(ThisTokBegin[AfterMajor])) { 566 Major = Major * 10 + ThisTokBegin[AfterMajor] - '0'; 588 if (ThisTokBegin[AfterMajor] != '.' || (AfterMajor + 1 == ActualLength)) { 597 while (AfterMinor < ActualLength && isdigit(ThisTokBegin[AfterMinor])) { 598 Minor = Minor * 10 + ThisTokBegin[AfterMinor] - '0'; 615 if (ThisTokBegin[AfterMinor] != '.') { 624 while (AfterSubminor < ActualLength && isdigit(ThisTokBegin[AfterSubminor])) { 625 Subminor = Subminor * 10 + ThisTokBegin[AfterSubmino [all...] |
/external/clang/lib/Sema/ |
H A D | SemaExpr.cpp | 2636 const char *ThisTokBegin = &IntegerBuffer[0]; local 2640 unsigned ActualLength = PP.getSpelling(Tok, ThisTokBegin, &Invalid); 2644 NumericLiteralParser Literal(ThisTokBegin, ThisTokBegin+ActualLength, 2711 Context, StringRef(ThisTokBegin, Length), StringLiteral::Ascii, 2727 Value = ThisTokBegin[I];
|