LLVM: include/llvm/Support/TextEncoding.h Source File (original) (raw)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15#ifndef LLVM_SUPPORT_TEXT_ENCODING_H
16#define LLVM_SUPPORT_TEXT_ENCODING_H
17
20#include "llvm/Config/config.h"
23
24#include
25#include <system_error>
26
27namespace llvm {
28
30
33
34private:
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54 virtual std::error_code convertString(StringRef Source,
56
57
58 virtual void reset() = 0;
59
60public:
62
63
65 auto EC = convertString(Source, Result);
66 reset();
67 return EC;
68 }
69};
70}
71
72
80
81
82class TextEncodingConverter {
83 std::unique_ptrdetails::TextEncodingConverterImplBase Converter;
84
85 TextEncodingConverter(
86 std::unique_ptrdetails::TextEncodingConverterImplBase Converter)
87 : Converter(std::move(Converter)) {}
88
89public:
90
91
92
93
94
95
98
99
100
101
102
103
104
107
109 TextEncodingConverter &operator=(const TextEncodingConverter &) = delete;
110
113
114 TextEncodingConverter &operator=(TextEncodingConverter &&Other) {
115 if (this != &Other)
116 Converter = std::move(Other.Converter);
117 return *this;
118 }
119
121
122
123
124
125
128 return Converter->convert(Source, Result);
129 }
130
133 auto EC = Converter->convert(Source, Result);
134 if (!EC)
135 return std::string(Result);
136 return EC;
137 }
138};
139
140}
141
142#endif
Provides ErrorOr smart pointer.
This file defines the SmallString class.
Represents either an error or a value T.
SmallString - A SmallString is just a SmallVector with methods and accessors that make it work better...
This class consists of common code factored out of the SmallVector class to reduce code duplication b...
StringRef - Represent a constant reference to a string, i.e.
TextEncodingConverter(const TextEncodingConverter &)=delete
~TextEncodingConverter()=default
TextEncodingConverter & operator=(const TextEncodingConverter &)=delete
std::error_code convert(StringRef Source, SmallVectorImpl< char > &Result) const
Converts a string.
Definition TextEncoding.h:126
TextEncodingConverter(TextEncodingConverter &&Other)
Definition TextEncoding.h:111
ErrorOr< std::string > convert(StringRef Source) const
Definition TextEncoding.h:131
static LLVM_ABI ErrorOr< TextEncodingConverter > create(TextEncoding From, TextEncoding To)
Creates a TextEncodingConverter instance.
TextEncodingConverter & operator=(TextEncodingConverter &&Other)
Definition TextEncoding.h:114
Definition TextEncoding.h:32
virtual ~TextEncodingConverterImplBase()=default
std::error_code convert(StringRef Source, SmallVectorImpl< char > &Result)
Converts a string and resets the converter to the initial state.
Definition TextEncoding.h:64
Definition TextEncoding.h:31
This is an optimization pass for GlobalISel generic memory operations.
TextEncoding
Definition TextEncoding.h:73
@ IBM1047
IBM EBCDIC 1047 character set encoding.
Definition TextEncoding.h:78
OutputIt move(R &&Range, OutputIt Out)
Provide wrappers to std::move which take ranges instead of having to pass begin/end explicitly.
Implement std::hash so that hash_code can be used in STL containers.