RetroLinker
Linker for several 8-bit, 16-bit and 32-bit formats
Loading...
Searching...
No Matches
unicode.h
1#ifndef UNICODE_H
2#define UNICODE_H
3
4namespace UnicodeConversion
5{
6 enum Result
7 {
13 Success,
20 NullCharacter,
29 InvalidCharacter,
38 OutOfRangeCharacter,
47 InvalidValue,
56 InterruptedEncoding,
65 InputTruncated,
73 BufferOverflow,
74 };
75
76 static inline bool IsSuccess(Result result)
77 {
78 switch(result)
79 {
80 case Success:
81 case NullCharacter:
82 return true;
83 default:
84 return false;
85 }
86 }
87
88 static inline bool InputAdvanced(Result result)
89 {
90 switch(result)
91 {
92 case BufferOverflow:
93 return false;
94 default:
95 return true;
96 }
97 }
98
99 static inline bool InputTerminated(Result result)
100 {
101 switch(result)
102 {
103 case NullCharacter:
104 case InputTruncated:
105 return true;
106 default:
107 return false;
108 }
109 }
110}
111
121UnicodeConversion::Result UTF32ToUTF8(char32_t const *& input, char *& output, size_t max_output, size_t& required_output);
131UnicodeConversion::Result UTF8ToUTF32(char const *& input, char32_t *& output, size_t max_input, bool force_out_of_range_decoding = false);
141UnicodeConversion::Result UTF32ToUTF16(char32_t const *& input, char16_t *& output, size_t max_output, size_t& required_output);
150UnicodeConversion::Result UTF16ToUTF32(char16_t const *& input, char32_t *& output, size_t max_input);
151
152UnicodeConversion::Result UTF16ToUTF8(char16_t const *& input, char *& output, size_t max_input, size_t max_output, size_t& required_output);
153UnicodeConversion::Result UTF8ToUTF16(char const *& input, char16_t *& output, size_t max_input, size_t max_output, size_t& required_output);
154
155#endif /* UNICODE_H */