1- // ===-- EncodingConverter .cpp - Encoding conversion class ---------*- C++ -*-=//
1+ // ===-- TextEncoding .cpp - Encoding conversion class ----- ---------*- C++ -*-=//
22//
33// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
44// See https://llvm.org/LICENSE.txt for license information.
1212// /
1313// ===----------------------------------------------------------------------===//
1414
15- #include " llvm/Support/EncodingConverter .h"
15+ #include " llvm/Support/TextEncoding .h"
1616#include " llvm/ADT/SmallString.h"
1717#include " llvm/ADT/SmallVector.h"
1818#include " llvm/ADT/StringExtras.h"
@@ -82,11 +82,12 @@ enum ConversionType {
8282// aforementioned encodings. The use of tables for conversion is only
8383// possible because EBCDIC 1047 is a single-byte, stateless encoding; other
8484// encodings are not supported.
85- class EncodingConverterTable : public details ::EncodingConverterImplBase {
85+ class TextEncodingConverterTable
86+ : public details::TextEncodingConverterImplBase {
8687 const ConversionType ConvType;
8788
8889public:
89- EncodingConverterTable (ConversionType ConvType) : ConvType(ConvType) {}
90+ TextEncodingConverterTable (ConversionType ConvType) : ConvType(ConvType) {}
9091
9192 std::error_code convertString (StringRef Source,
9293 SmallVectorImpl<char > &Result) override ;
@@ -95,8 +96,8 @@ class EncodingConverterTable : public details::EncodingConverterImplBase {
9596};
9697
9798std::error_code
98- EncodingConverterTable ::convertString (StringRef Source,
99- SmallVectorImpl<char > &Result) {
99+ TextEncodingConverterTable ::convertString (StringRef Source,
100+ SmallVectorImpl<char > &Result) {
100101 switch (ConvType) {
101102 case IBM1047ToUTF8:
102103 ConverterEBCDIC::convertToUTF8 (Source, Result);
@@ -117,13 +118,13 @@ struct UConverterDeleter {
117118};
118119using UConverterUniquePtr = std::unique_ptr<UConverter, UConverterDeleter>;
119120
120- class EncodingConverterICU : public details ::EncodingConverterImplBase {
121+ class TextEncodingConverterICU : public details ::TextEncodingConverterImplBase {
121122 UConverterUniquePtr FromConvDesc;
122123 UConverterUniquePtr ToConvDesc;
123124
124125public:
125- EncodingConverterICU (UConverterUniquePtr FromConverter,
126- UConverterUniquePtr ToConverter)
126+ TextEncodingConverterICU (UConverterUniquePtr FromConverter,
127+ UConverterUniquePtr ToConverter)
127128 : FromConvDesc(std::move(FromConverter)),
128129 ToConvDesc (std::move(ToConverter)) {}
129130
@@ -138,8 +139,8 @@ class EncodingConverterICU : public details::EncodingConverterImplBase {
138139// insufficient buffer size. In the future, it would better to save the partial
139140// result and redo the conversion for the remaining string.
140141std::error_code
141- EncodingConverterICU ::convertString (StringRef Source,
142- SmallVectorImpl<char > &Result) {
142+ TextEncodingConverterICU ::convertString (StringRef Source,
143+ SmallVectorImpl<char > &Result) {
143144 // Setup the input in case it has no backing data.
144145 size_t InputLength = Source.size ();
145146 const char *In = InputLength ? const_cast <char *>(Source.data ()) : " " ;
@@ -183,13 +184,14 @@ EncodingConverterICU::convertString(StringRef Source,
183184 return std::error_code ();
184185}
185186
186- void EncodingConverterICU ::reset () {
187+ void TextEncodingConverterICU ::reset () {
187188 ucnv_reset (&*FromConvDesc);
188189 ucnv_reset (&*ToConvDesc);
189190}
190191
191192#elif HAVE_ICONV
192- class EncodingConverterIconv : public details ::EncodingConverterImplBase {
193+ class TextEncodingConverterIconv
194+ : public details::TextEncodingConverterImplBase {
193195 class UniqueIconvT {
194196 iconv_t ConvDesc;
195197
@@ -216,7 +218,7 @@ class EncodingConverterIconv : public details::EncodingConverterImplBase {
216218 UniqueIconvT ConvDesc;
217219
218220public:
219- EncodingConverterIconv (UniqueIconvT ConvDesc)
221+ TextEncodingConverterIconv (UniqueIconvT ConvDesc)
220222 : ConvDesc(std::move(ConvDesc)) {}
221223
222224 std::error_code convertString (StringRef Source,
@@ -230,8 +232,8 @@ class EncodingConverterIconv : public details::EncodingConverterImplBase {
230232// insufficient buffer size. In the future, it would better to save the partial
231233// result and redo the conversion for the remaining string.
232234std::error_code
233- EncodingConverterIconv ::convertString (StringRef Source,
234- SmallVectorImpl<char > &Result) {
235+ TextEncodingConverterIconv ::convertString (StringRef Source,
236+ SmallVectorImpl<char > &Result) {
235237 // Setup the output. We directly write into the SmallVector.
236238 size_t Capacity = Result.capacity ();
237239 char *Output = static_cast <char *>(Result.data ());
@@ -289,15 +291,15 @@ EncodingConverterIconv::convertString(StringRef Source,
289291 return std::error_code ();
290292}
291293
292- void EncodingConverterIconv ::reset () {
294+ void TextEncodingConverterIconv ::reset () {
293295 iconv (ConvDesc, nullptr , nullptr , nullptr , nullptr );
294296}
295297
296298#endif // HAVE_ICONV
297299} // namespace
298300
299- ErrorOr<EncodingConverter> EncodingConverter::create (TextEncoding CPFrom,
300- TextEncoding CPTo) {
301+ ErrorOr<TextEncodingConverter>
302+ TextEncodingConverter::create (TextEncoding CPFrom, TextEncoding CPTo) {
301303
302304 // Text encodings should be distinct.
303305 if (CPFrom == CPTo)
@@ -311,16 +313,17 @@ ErrorOr<EncodingConverter> EncodingConverter::create(TextEncoding CPFrom,
311313 else
312314 return std::error_code (errno, std::generic_category ());
313315
314- return EncodingConverter (
315- std::make_unique<EncodingConverterTable >(Conversion));
316+ return TextEncodingConverter (
317+ std::make_unique<TextEncodingConverterTable >(Conversion));
316318}
317319
318- ErrorOr<EncodingConverter> EncodingConverter ::create (StringRef From,
319- StringRef To) {
320+ ErrorOr<TextEncodingConverter> TextEncodingConverter ::create (StringRef From,
321+ StringRef To) {
320322 std::optional<TextEncoding> FromEncoding = getKnownEncoding (From);
321323 std::optional<TextEncoding> ToEncoding = getKnownEncoding (To);
322324 if (FromEncoding && ToEncoding) {
323- ErrorOr<EncodingConverter> Converter = create (*FromEncoding, *ToEncoding);
325+ ErrorOr<TextEncodingConverter> Converter =
326+ create (*FromEncoding, *ToEncoding);
324327 if (Converter)
325328 return Converter;
326329 }
@@ -334,15 +337,16 @@ ErrorOr<EncodingConverter> EncodingConverter::create(StringRef From,
334337 if (U_FAILURE (EC)) {
335338 return std::error_code (errno, std::generic_category ());
336339 }
337- std::unique_ptr<details::EncodingConverterImplBase > Converter =
338- std::make_unique<EncodingConverterICU >(std::move (FromConvDesc),
339- std::move (ToConvDesc));
340- return EncodingConverter (std::move (Converter));
340+ std::unique_ptr<details::TextEncodingConverterImplBase > Converter =
341+ std::make_unique<TextEncodingConverterICU >(std::move (FromConvDesc),
342+ std::move (ToConvDesc));
343+ return TextEncodingConverter (std::move (Converter));
341344#elif HAVE_ICONV
342345 iconv_t ConvDesc = iconv_open (To.str ().c_str (), From.str ().c_str ());
343346 if (ConvDesc == (iconv_t )-1 )
344347 return std::error_code (errno, std::generic_category ());
345- return EncodingConverter (std::make_unique<EncodingConverterIconv>(ConvDesc));
348+ return TextEncodingConverter (
349+ std::make_unique<TextEncodingConverterIconv>(ConvDesc));
346350#else
347351 return std::make_error_code (std::errc::invalid_argument);
348352#endif
0 commit comments