summaryrefslogtreecommitdiffstats
path: root/clang/lib
diff options
context:
space:
mode:
authorDmitri Gribenko <gribozavr@gmail.com>2012-07-27 20:36:22 +0000
committerDmitri Gribenko <gribozavr@gmail.com>2012-07-27 20:36:22 +0000
commitce675c52ba250661b18771d8841040683836e3d5 (patch)
treee3b1f8d01e8b3c598dd362850c2efe8abbeb2154 /clang/lib
parent8e87a75be7ce004f55802e472a512df429729db1 (diff)
downloadbcm5719-llvm-ce675c52ba250661b18771d8841040683836e3d5.tar.gz
bcm5719-llvm-ce675c52ba250661b18771d8841040683836e3d5.zip
Add a function to convert a single Unicode code point to a UTF8 sequence.
llvm-svn: 160890
Diffstat (limited to 'clang/lib')
-rw-r--r--clang/lib/Basic/ConvertUTF.c3
-rw-r--r--clang/lib/Basic/ConvertUTFWrapper.cpp16
2 files changed, 17 insertions, 2 deletions
diff --git a/clang/lib/Basic/ConvertUTF.c b/clang/lib/Basic/ConvertUTF.c
index e1970039e16..4793b251f60 100644
--- a/clang/lib/Basic/ConvertUTF.c
+++ b/clang/lib/Basic/ConvertUTF.c
@@ -285,6 +285,7 @@ ConversionResult ConvertUTF16toUTF8 (
*targetStart = target;
return result;
}
+#endif
/* --------------------------------------------------------------------- */
@@ -339,8 +340,6 @@ ConversionResult ConvertUTF32toUTF8 (
return result;
}
-#endif
-
/* --------------------------------------------------------------------- */
/*
diff --git a/clang/lib/Basic/ConvertUTFWrapper.cpp b/clang/lib/Basic/ConvertUTFWrapper.cpp
index 42b4f580790..a1b3f7fd9da 100644
--- a/clang/lib/Basic/ConvertUTFWrapper.cpp
+++ b/clang/lib/Basic/ConvertUTFWrapper.cpp
@@ -51,4 +51,20 @@ bool ConvertUTF8toWide(unsigned WideCharWidth, llvm::StringRef Source,
return result == conversionOK;
}
+bool ConvertCodePointToUTF8(unsigned Source, char *&ResultPtr) {
+ const UTF32 *SourceStart = &Source;
+ const UTF32 *SourceEnd = SourceStart + 1;
+ UTF8 *TargetStart = reinterpret_cast<UTF8 *>(ResultPtr);
+ UTF8 *TargetEnd = TargetStart + 4;
+ ConversionResult CR = ConvertUTF32toUTF8(&SourceStart, SourceEnd,
+ &TargetStart, TargetEnd,
+ strictConversion);
+ if (CR != conversionOK)
+ return false;
+
+ ResultPtr = reinterpret_cast<char*>(TargetStart);
+ return true;
}
+
+} // end namespace clang
+
OpenPOWER on IntegriCloud