aboutsummaryrefslogtreecommitdiff
path: root/include/clang/Basic/ConvertUTF.h
AgeCommit message (Collapse)Author
2013-01-30Move UTF conversion routines from clang/lib/Basic to llvm/lib/SupportDmitri Gribenko
This is required to use them in TableGen. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173924 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-25ConvertUTF.h: Suppress a warning with ptrdiff_t on i686. [-Wsign-compare]NAKAMURA Takumi
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173436 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-24Move 'convertUTF8Sequence' helper into the C++ section of the header file.Jordan Rose
It's annotated as "inline", but ConvertUTF.c should still be able to compile as C89. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173376 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-24Handle universal character names and Unicode characters outside of literals.Jordan Rose
This is a missing piece for C99 conformance. This patch handles UCNs by adding a '\\' case to LexTokenInternal and LexIdentifier -- if we see a backslash, we tentatively try to read in a UCN. If the UCN is not syntactically well-formed, we fall back to the old treatment: a backslash followed by an identifier beginning with 'u' (or 'U'). Because the spelling of an identifier with UCNs still has the UCN in it, we need to convert that to UTF-8 in Preprocessor::LookUpIdentifierInfo. Of course, valid code that does *not* use UCNs will see only a very minimal performance hit (checks after each identifier for non-ASCII characters, checks when converting raw_identifiers to identifiers that they do not contain UCNs, and checks when getting the spelling of an identifier that it does not contain a UCN). This patch also adds basic support for actual UTF-8 in the source. This is treated almost exactly the same as UCNs except that we consider stray Unicode characters to be mistakes and offer a fixit to remove them. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173369 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-18Fix mismatched #endif.Jordan Rose
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@172860 91177308-0d34-0410-b5e6-96231b3b80d8
2012-09-08When a bad UTF-8 encoding or bogus escape sequence is encountered in aRichard Smith
string literal, produce a diagnostic pointing at the erroneous character range, not at the start of the literal. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163459 91177308-0d34-0410-b5e6-96231b3b80d8
2012-09-06Enabling the UTF conversion routines that were previously conditionally ↵Enrico Granata
ifdef'ed out. This change is required to support enhancements in the LLDB data formatters git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163331 91177308-0d34-0410-b5e6-96231b3b80d8
2012-07-27Add a function to convert a single Unicode code point to a UTF8 sequence.Dmitri Gribenko
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160890 91177308-0d34-0410-b5e6-96231b3b80d8
2012-07-03Share ConvertUTF8toWide() between Lex and CodeGen.Nico Weber
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159634 91177308-0d34-0410-b5e6-96231b3b80d8
2012-04-18Nicer display of unprintable source, and fix caret display for non-ascii textSeth Cantrell
Unprintable source in diagnostics is transformed to a printable form and then displayed with reversed colors if possible. Unprintable characters are displayed as <U+NNNN> while bytes that do not represent valid characters are shown as <XX>. Column adjustments to diagnostic carets, highlighted ranges, and fixups are made both for characters escaped as above and for characters which are printable but take up more than a single column. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154980 91177308-0d34-0410-b5e6-96231b3b80d8
2012-04-17Revert "Nicer display of unprintable source, and fix caret display for ↵Seth Cantrell
non-ascii text" This reverts commit e9a3b76ba589a8a884e978273beaed0d97cf9861. Revert "fix display of source lines with null characters" This reverts commit 70712b276e40bbe11e5063dfc7e82ce3209929cd. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154950 91177308-0d34-0410-b5e6-96231b3b80d8
2012-04-17Nicer display of unprintable source, and fix caret display for non-ascii textSeth Cantrell
Unprintable source in diagnostics is transformed to a printable form and then displayed with reversed colors if possible. Unprintable characters are displayed as <U+NNNN> while bytes that do not represent valid characters are shown as <XX>. Column adjustments to diagnostic carets, highlighted ranges, and fixups are made both for characters escaped as above and for characters which are printable but take up more than a single column. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154946 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-08When checking the encoding of an 8-bit string literal, don't just check theRichard Smith
first codepoint! Also, don't reject empty raw string literals for spurious "encoding" issues. Also, don't rely on undefined behavior in ConvertUTF.c. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152344 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-01Move ConvertUTF8toUTF32 out of #if 0, in preparation for a patch which needs it.Eli Friedman
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143415 91177308-0d34-0410-b5e6-96231b3b80d8
2011-04-14Add header guards to include/clang/Basic/ConvertUTF.h.Sebastian Redl
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129515 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-09Remove tabs, and whitespace cleanups.Mike Stump
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81346 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-09Remove tab characters.Mike Stump
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81340 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-01Add ConvertUTF module from http://www.unicode.org/Public/PROGRAMS/CVTUTF.Steve Naroff
#ifdef'd out the 5 conversion routines that we don't currently need. Still need a bit more work in GetAddrOfConstantCFString(). Added a FIXME to indicate this. Expect to remove the FIXME today... git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68208 91177308-0d34-0410-b5e6-96231b3b80d8