| #include "llvm/Support/Locale.h" | |
| #include "llvm/ADT/StringRef.h" | |
| #include "llvm/Support/Unicode.h" | |
| namespace llvm { | |
| namespace sys { | |
| namespace locale { | |
| int columnWidth(StringRef Text) { | |
| #if _WIN32 | |
| return Text.size(); | |
| #else | |
| return llvm::sys::unicode::columnWidthUTF8(Text); | |
| #endif | |
| } | |
| bool isPrint(int UCS) { | |
| #if _WIN32 | |
| // Restrict characters that we'll try to print to the lower part of ASCII | |
| // except for the control characters (0x20 - 0x7E). In general one can not | |
| // reliably output code points U+0080 and higher using narrow character C/C++ | |
| // output functions in Windows, because the meaning of the upper 128 codes is | |
| // determined by the active code page in the console. | |
| return ' ' <= UCS && UCS <= '~'; | |
| #else | |
| return llvm::sys::unicode::isPrintable(UCS); | |
| #endif | |
| } | |
| } // namespace locale | |
| } // namespace sys | |
| } // namespace llvm |