1 /*
2  * The internal definitions
3  *
4  * Copyright (C) 2008-2020, Joachim Metz <joachim.metz@gmail.com>
5  *
6  * Refer to AUTHORS for acknowledgements.
7  *
8  * This program is free software: you can redistribute it and/or modify
9  * it under the terms of the GNU Lesser General Public License as published by
10  * the Free Software Foundation, either version 3 of the License, or
11  * (at your option) any later version.
12  *
13  * This program is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16  * GNU General Public License for more details.
17  *
18  * You should have received a copy of the GNU Lesser General Public License
19  * along with this program.  If not, see <https://www.gnu.org/licenses/>.
20  */
21 
22 #if !defined( _LIBUNA_INTERNAL_DEFINITIONS_H )
23 #define _LIBUNA_INTERNAL_DEFINITIONS_H
24 
25 #include <common.h>
26 
27 /* Define HAVE_LOCAL_LIBUNA for local use of libuna
28  */
29 #if !defined( HAVE_LOCAL_LIBUNA )
30 #include <libuna/definitions.h>
31 
32 /* The definitions in <libuna/definitions.h> are copied here
33  * for local use of libuna
34  */
35 #else
36 #include <byte_stream.h>
37 
38 #define LIBUNA_VERSION						20201204
39 
40 /* The libuna version string
41  */
42 #define LIBUNA_VERSION_STRING					"20201204"
43 
44 /* The endian definitions
45  */
46 #define	LIBUNA_ENDIAN_BIG					_BYTE_STREAM_ENDIAN_BIG
47 #define	LIBUNA_ENDIAN_LITTLE					_BYTE_STREAM_ENDIAN_LITTLE
48 
49 /* The codepage definitions
50  */
51 enum LIBUNA_CODEPAGES
52 {
53 	LIBUNA_CODEPAGE_ASCII					= 20127,
54 
55 	LIBUNA_CODEPAGE_ISO_8859_1				= 28591,
56 	LIBUNA_CODEPAGE_ISO_8859_2				= 28592,
57 	LIBUNA_CODEPAGE_ISO_8859_3				= 28593,
58 	LIBUNA_CODEPAGE_ISO_8859_4				= 28594,
59 	LIBUNA_CODEPAGE_ISO_8859_5				= 28595,
60 	LIBUNA_CODEPAGE_ISO_8859_6				= 28596,
61 	LIBUNA_CODEPAGE_ISO_8859_7				= 28597,
62 	LIBUNA_CODEPAGE_ISO_8859_8				= 28598,
63 	LIBUNA_CODEPAGE_ISO_8859_9				= 28599,
64 	LIBUNA_CODEPAGE_ISO_8859_10				= 28600,
65 	LIBUNA_CODEPAGE_ISO_8859_11				= 28601,
66 	LIBUNA_CODEPAGE_ISO_8859_13				= 28603,
67 	LIBUNA_CODEPAGE_ISO_8859_14				= 28604,
68 	LIBUNA_CODEPAGE_ISO_8859_15				= 28605,
69 	LIBUNA_CODEPAGE_ISO_8859_16				= 28606,
70 
71 	LIBUNA_CODEPAGE_KOI8_R					= 20866,
72 	LIBUNA_CODEPAGE_KOI8_U					= 21866,
73 
74 	LIBUNA_CODEPAGE_OEM_437					= 437,
75 	LIBUNA_CODEPAGE_OEM_720					= 720,
76 	LIBUNA_CODEPAGE_OEM_737					= 737,
77 	LIBUNA_CODEPAGE_OEM_775					= 775,
78 	LIBUNA_CODEPAGE_OEM_850					= 850,
79 	LIBUNA_CODEPAGE_OEM_852					= 852,
80 	LIBUNA_CODEPAGE_OEM_855					= 855,
81 	LIBUNA_CODEPAGE_OEM_857					= 857,
82 	LIBUNA_CODEPAGE_OEM_858					= 858,
83 	LIBUNA_CODEPAGE_OEM_862					= 862,
84 	LIBUNA_CODEPAGE_OEM_866					= 866,
85 
86 	LIBUNA_CODEPAGE_WINDOWS_874				= 874,
87 	LIBUNA_CODEPAGE_WINDOWS_932				= 932,
88 	LIBUNA_CODEPAGE_WINDOWS_936				= 936,
89 	LIBUNA_CODEPAGE_WINDOWS_949				= 949,
90 	LIBUNA_CODEPAGE_WINDOWS_950				= 950,
91 	LIBUNA_CODEPAGE_WINDOWS_1250				= 1250,
92 	LIBUNA_CODEPAGE_WINDOWS_1251				= 1251,
93 	LIBUNA_CODEPAGE_WINDOWS_1252				= 1252,
94 	LIBUNA_CODEPAGE_WINDOWS_1253				= 1253,
95 	LIBUNA_CODEPAGE_WINDOWS_1254				= 1254,
96 	LIBUNA_CODEPAGE_WINDOWS_1255				= 1255,
97 	LIBUNA_CODEPAGE_WINDOWS_1256				= 1256,
98 	LIBUNA_CODEPAGE_WINDOWS_1257				= 1257,
99 	LIBUNA_CODEPAGE_WINDOWS_1258				= 1258
100 };
101 
102 #define LIBUNA_CODEPAGE_US_ASCII				LIBUNA_CODEPAGE_ASCII
103 
104 #define LIBUNA_CODEPAGE_ISO_WESTERN_EUROPEAN			LIBUNA_CODEPAGE_ISO_8859_1
105 #define LIBUNA_CODEPAGE_ISO_CENTRAL_EUROPEAN			LIBUNA_CODEPAGE_ISO_8859_2
106 #define LIBUNA_CODEPAGE_ISO_SOUTH_EUROPEAN			LIBUNA_CODEPAGE_ISO_8859_3
107 #define LIBUNA_CODEPAGE_ISO_NORTH_EUROPEAN			LIBUNA_CODEPAGE_ISO_8859_4
108 #define LIBUNA_CODEPAGE_ISO_CYRILLIC				LIBUNA_CODEPAGE_ISO_8859_5
109 #define LIBUNA_CODEPAGE_ISO_ARABIC				LIBUNA_CODEPAGE_ISO_8859_6
110 #define LIBUNA_CODEPAGE_ISO_GREEK				LIBUNA_CODEPAGE_ISO_8859_7
111 #define LIBUNA_CODEPAGE_ISO_HEBREW				LIBUNA_CODEPAGE_ISO_8859_8
112 #define LIBUNA_CODEPAGE_ISO_TURKISH				LIBUNA_CODEPAGE_ISO_8859_9
113 #define LIBUNA_CODEPAGE_ISO_NORDIC				LIBUNA_CODEPAGE_ISO_8859_10
114 #define LIBUNA_CODEPAGE_ISO_THAI				LIBUNA_CODEPAGE_ISO_8859_11
115 #define LIBUNA_CODEPAGE_ISO_BALTIC				LIBUNA_CODEPAGE_ISO_8859_13
116 #define LIBUNA_CODEPAGE_ISO_CELTIC				LIBUNA_CODEPAGE_ISO_8859_14
117 
118 #define LIBUNA_CODEPAGE_ISO_LATIN_1				LIBUNA_CODEPAGE_ISO_8859_1
119 #define LIBUNA_CODEPAGE_ISO_LATIN_2				LIBUNA_CODEPAGE_ISO_8859_2
120 #define LIBUNA_CODEPAGE_ISO_LATIN_3				LIBUNA_CODEPAGE_ISO_8859_3
121 #define LIBUNA_CODEPAGE_ISO_LATIN_4				LIBUNA_CODEPAGE_ISO_8859_4
122 #define LIBUNA_CODEPAGE_ISO_LATIN_5				LIBUNA_CODEPAGE_ISO_8859_9
123 #define LIBUNA_CODEPAGE_ISO_LATIN_6				LIBUNA_CODEPAGE_ISO_8859_10
124 #define LIBUNA_CODEPAGE_ISO_LATIN_7				LIBUNA_CODEPAGE_ISO_8859_13
125 #define LIBUNA_CODEPAGE_ISO_LATIN_8				LIBUNA_CODEPAGE_ISO_8859_14
126 #define LIBUNA_CODEPAGE_ISO_LATIN_9				LIBUNA_CODEPAGE_ISO_8859_15
127 #define LIBUNA_CODEPAGE_ISO_LATIN_10				LIBUNA_CODEPAGE_ISO_8859_16
128 
129 #define LIBUNA_CODEPAGE_KOI8_RUSSIAN				LIBUNA_CODEPAGE_KOI8_R
130 #define LIBUNA_CODEPAGE_KOI8_UKRAINIAN				LIBUNA_CODEPAGE_KOI8_U
131 
132 #define LIBUNA_CODEPAGE_OEM_874					LIBUNA_CODEPAGE_WINDOWS_874
133 #define LIBUNA_CODEPAGE_OEM_932					LIBUNA_CODEPAGE_WINDOWS_932
134 #define LIBUNA_CODEPAGE_OEM_936					LIBUNA_CODEPAGE_WINDOWS_936
135 #define LIBUNA_CODEPAGE_OEM_949					LIBUNA_CODEPAGE_WINDOWS_949
136 #define LIBUNA_CODEPAGE_OEM_950					LIBUNA_CODEPAGE_WINDOWS_950
137 #define LIBUNA_CODEPAGE_OEM_1258				LIBUNA_CODEPAGE_WINDOWS_1258
138 
139 #define LIBUNA_CODEPAGE_OEM_US_ENGLISH				LIBUNA_CODEPAGE_OEM_437
140 #define LIBUNA_CODEPAGE_OEM_ARABIC				LIBUNA_CODEPAGE_OEM_720
141 #define LIBUNA_CODEPAGE_OEM_GREEK				LIBUNA_CODEPAGE_OEM_737
142 #define LIBUNA_CODEPAGE_OEM_BALTIC				LIBUNA_CODEPAGE_OEM_775
143 #define LIBUNA_CODEPAGE_OEM_LATIN_1				LIBUNA_CODEPAGE_OEM_850
144 #define LIBUNA_CODEPAGE_OEM_LATIN_2				LIBUNA_CODEPAGE_OEM_852
145 #define LIBUNA_CODEPAGE_OEM_CYRILLIC				LIBUNA_CODEPAGE_OEM_855
146 #define LIBUNA_CODEPAGE_OEM_TURKISH				LIBUNA_CODEPAGE_OEM_857
147 #define LIBUNA_CODEPAGE_OEM_LATIN_1_WITH_EURO			LIBUNA_CODEPAGE_OEM_858
148 #define LIBUNA_CODEPAGE_OEM_HEBREW				LIBUNA_CODEPAGE_OEM_862
149 #define LIBUNA_CODEPAGE_OEM_RUSSIAN				LIBUNA_CODEPAGE_OEM_866
150 #define LIBUNA_CODEPAGE_OEM_THAI				LIBUNA_CODEPAGE_WINDOWS_874
151 #define LIBUNA_CODEPAGE_OEM_JAPANESE				LIBUNA_CODEPAGE_WINDOWS_932
152 #define LIBUNA_CODEPAGE_OEM_CHINESE_SIMPLIFIED			LIBUNA_CODEPAGE_WINDOWS_936
153 #define LIBUNA_CODEPAGE_OEM_KOREAN				LIBUNA_CODEPAGE_WINDOWS_949
154 #define LIBUNA_CODEPAGE_OEM_CHINESE_TRADITIONAL			LIBUNA_CODEPAGE_WINDOWS_950
155 #define LIBUNA_CODEPAGE_OEM_VIETNAMESE				LIBUNA_CODEPAGE_WINDOWS_1258
156 
157 #define LIBUNA_CODEPAGE_WINDOWS_THAI				LIBUNA_CODEPAGE_WINDOWS_874
158 #define LIBUNA_CODEPAGE_WINDOWS_JAPANESE			LIBUNA_CODEPAGE_WINDOWS_932
159 #define LIBUNA_CODEPAGE_WINDOWS_CHINESE_SIMPLIFIED		LIBUNA_CODEPAGE_WINDOWS_936
160 #define LIBUNA_CODEPAGE_WINDOWS_KOREAN				LIBUNA_CODEPAGE_WINDOWS_949
161 #define LIBUNA_CODEPAGE_WINDOWS_CHINESE_TRADITIONAL		LIBUNA_CODEPAGE_WINDOWS_950
162 #define LIBUNA_CODEPAGE_WINDOWS_CENTRAL_EUROPEAN		LIBUNA_CODEPAGE_WINDOWS_1250
163 #define LIBUNA_CODEPAGE_WINDOWS_CYRILLIC			LIBUNA_CODEPAGE_WINDOWS_1251
164 #define LIBUNA_CODEPAGE_WINDOWS_WESTERN_EUROPEAN		LIBUNA_CODEPAGE_WINDOWS_1252
165 #define LIBUNA_CODEPAGE_WINDOWS_GREEK				LIBUNA_CODEPAGE_WINDOWS_1253
166 #define LIBUNA_CODEPAGE_WINDOWS_TURKISH				LIBUNA_CODEPAGE_WINDOWS_1254
167 #define LIBUNA_CODEPAGE_WINDOWS_HEBREW				LIBUNA_CODEPAGE_WINDOWS_1255
168 #define LIBUNA_CODEPAGE_WINDOWS_ARABIC				LIBUNA_CODEPAGE_WINDOWS_1256
169 #define LIBUNA_CODEPAGE_WINDOWS_BALTIC				LIBUNA_CODEPAGE_WINDOWS_1257
170 #define LIBUNA_CODEPAGE_WINDOWS_VIETNAMESE			LIBUNA_CODEPAGE_WINDOWS_1258
171 
172 #define LIBUNA_CODEPAGE_SHIFT_JIS				LIBUNA_CODEPAGE_WINDOWS_932
173 #define LIBUNA_CODEPAGE_GB2312					LIBUNA_CODEPAGE_WINDOWS_936
174 
175 /* The comparison function definitions
176  */
177 enum LIBUNA_COMPARE_DEFINITIONS
178 {
179 	/* The first string is less than the second string
180 	 */
181 	LIBUNA_COMPARE_LESS,
182 
183 	/* The first and second strings are equal
184 	 */
185 	LIBUNA_COMPARE_EQUAL,
186 
187 	/* The first string is greater than the second string
188 	 */
189 	LIBUNA_COMPARE_GREATER
190 };
191 
192 /* Base16 variants
193  * Byte:
194  * 0 - 1	Character limit
195  * 2 - 3	Reserved
196  * 4		Case (0 not supported)
197  * 5 - 6	Reserved
198  * 7		String encoding (0 is byte stream)
199  */
200 enum LIBUNA_BASE16_VARIANTS
201 {
202 	LIBUNA_BASE16_VARIANT_CASE_LOWER			= 0x00010000UL,
203 	LIBUNA_BASE16_VARIANT_CASE_MIXED			= 0x00020000UL,
204 	LIBUNA_BASE16_VARIANT_CASE_UPPER			= 0x00030000UL,
205 
206 	LIBUNA_BASE16_VARIANT_CHARACTER_LIMIT_NONE		= 0x00000000UL,
207 	LIBUNA_BASE16_VARIANT_CHARACTER_LIMIT_64		= 0x00000040UL,
208 	LIBUNA_BASE16_VARIANT_CHARACTER_LIMIT_76		= 0x0000004cUL,
209 
210 	LIBUNA_BASE16_VARIANT_ENCODING_UTF16_BIG_ENDIAN		= 0x10000000UL,
211 	LIBUNA_BASE16_VARIANT_ENCODING_UTF16_LITTLE_ENDIAN	= 0x20000000UL,
212 	LIBUNA_BASE16_VARIANT_ENCODING_UTF32_BIG_ENDIAN		= 0x30000000UL,
213 	LIBUNA_BASE16_VARIANT_ENCODING_UTF32_LITTLE_ENDIAN	= 0x40000000UL
214 };
215 
216 #define LIBUNA_BASE16_VARIANT_ENCODING_BYTE_STREAM		0
217 
218 #define LIBUNA_BASE16_VARIANT_RFC4648 \
219 	LIBUNA_BASE16_VARIANT_CASE_MIXED | LIBUNA_BASE16_VARIANT_CHARACTER_LIMIT_NONE
220 
221 /* Base16 processing flags
222  */
223 enum LIBUNA_BASE16_FLAGS
224 {
225 	LIBUNA_BASE16_FLAG_STRIP_WHITESPACE			= 0x01
226 };
227 
228 /* Base32 variants
229  * Byte:
230  * 0 - 1	Character limit
231  * 2 - 3	Reserved
232  * 4		Alphabet type (0 not supported)
233  * 5		Reserved
234  * 6    	Padding (0 not supported)
235  * 7		String encoding (0 is byte stream)
236  */
237 enum LIBUNA_BASE32_VARIANTS
238 {
239 	LIBUNA_BASE32_VARIANT_ALPHABET_NORMAL			= 0x00010000UL,
240 	LIBUNA_BASE32_VARIANT_ALPHABET_HEX			= 0x00020000UL,
241 
242 	LIBUNA_BASE32_VARIANT_CHARACTER_LIMIT_NONE		= 0x00000000UL,
243 	LIBUNA_BASE32_VARIANT_CHARACTER_LIMIT_64		= 0x00000040UL,
244 
245 	LIBUNA_BASE32_VARIANT_PADDING_NONE			= 0x01000000UL,
246 	LIBUNA_BASE32_VARIANT_PADDING_OPTIONAL			= 0x02000000UL,
247 	LIBUNA_BASE32_VARIANT_PADDING_REQUIRED			= 0x03000000UL,
248 
249 	LIBUNA_BASE32_VARIANT_ENCODING_UTF16_BIG_ENDIAN		= 0x10000000UL,
250 	LIBUNA_BASE32_VARIANT_ENCODING_UTF16_LITTLE_ENDIAN	= 0x20000000UL,
251 	LIBUNA_BASE32_VARIANT_ENCODING_UTF32_BIG_ENDIAN		= 0x30000000UL,
252 	LIBUNA_BASE32_VARIANT_ENCODING_UTF32_LITTLE_ENDIAN	= 0x40000000UL
253 };
254 
255 #define LIBUNA_BASE32_VARIANT_RFC4648 \
256 	LIBUNA_BASE32_VARIANT_ALPHABET_NORMAL | LIBUNA_BASE32_VARIANT_CHARACTER_LIMIT_NONE | LIBUNA_BASE32_VARIANT_PADDING_REQUIRED
257 
258 #define LIBUNA_BASE32_VARIANT_HEX \
259 	LIBUNA_BASE32_VARIANT_ALPHABET_HEX | LIBUNA_BASE32_VARIANT_CHARACTER_LIMIT_NONE | LIBUNA_BASE32_VARIANT_PADDING_REQUIRED
260 
261 /* Base32 processing flags
262  */
263 enum LIBUNA_BASE32_FLAGS
264 {
265 	LIBUNA_BASE32_FLAG_STRIP_WHITESPACE			= 0x01
266 };
267 
268 /* Base64 variants
269  * Byte:
270  * 0 - 1	Character limit
271  * 2 - 3	Reserved
272  * 4		Alphabet type (0 not supported)
273  * 5		Reserved
274  * 6    	Padding (0 not supported)
275  * 7		String encoding (0 is byte stream)
276  */
277 enum LIBUNA_BASE64_VARIANTS
278 {
279 	LIBUNA_BASE64_VARIANT_ALPHABET_NORMAL			= 0x00010000UL,
280 	LIBUNA_BASE64_VARIANT_ALPHABET_URL			= 0x00020000UL,
281 
282 	LIBUNA_BASE64_VARIANT_CHARACTER_LIMIT_NONE		= 0x00000000UL,
283 	LIBUNA_BASE64_VARIANT_CHARACTER_LIMIT_64		= 0x00000040UL,
284 	LIBUNA_BASE64_VARIANT_CHARACTER_LIMIT_76		= 0x0000004cUL,
285 
286 	/* No padding */
287 	LIBUNA_BASE64_VARIANT_PADDING_NONE			= 0x01000000UL,
288 	/* Padding is optional */
289 	LIBUNA_BASE64_VARIANT_PADDING_OPTIONAL			= 0x02000000UL,
290 	/* Padding is required */
291 	LIBUNA_BASE64_VARIANT_PADDING_REQUIRED			= 0x03000000UL,
292 	/* Invalid base64 characters are considered padding */
293 	LIBUNA_BASE64_VARIANT_PADDING_INVALID			= 0x04000000UL,
294 
295 	LIBUNA_BASE64_VARIANT_ENCODING_UTF16_BIG_ENDIAN		= 0x10000000UL,
296 	LIBUNA_BASE64_VARIANT_ENCODING_UTF16_LITTLE_ENDIAN	= 0x20000000UL,
297 	LIBUNA_BASE64_VARIANT_ENCODING_UTF32_BIG_ENDIAN		= 0x30000000UL,
298 	LIBUNA_BASE64_VARIANT_ENCODING_UTF32_LITTLE_ENDIAN	= 0x40000000UL
299 };
300 
301 #define LIBUNA_BASE64_VARIANT_RFC1421 \
302 	LIBUNA_BASE64_VARIANT_ALPHABET_NORMAL | LIBUNA_BASE64_VARIANT_CHARACTER_LIMIT_64 | LIBUNA_BASE64_VARIANT_PADDING_REQUIRED
303 
304 #define LIBUNA_BASE64_VARIANT_PEM \
305 	LIBUNA_BASE64_VARIANT_RFC1421
306 
307 #define LIBUNA_BASE64_VARIANT_RFC1642 \
308 	LIBUNA_BASE64_VARIANT_ALPHABET_NORMAL | LIBUNA_BASE64_VARIANT_CHARACTER_LIMIT_NONE | LIBUNA_BASE64_VARIANT_PADDING_NONE
309 
310 #define LIBUNA_BASE64_VARIANT_UTF7 \
311 	LIBUNA_BASE64_VARIANT_ALPHABET_NORMAL | LIBUNA_BASE64_VARIANT_CHARACTER_LIMIT_NONE | LIBUNA_BASE64_VARIANT_PADDING_INVALID
312 
313 #define LIBUNA_BASE64_VARIANT_RFC2045 \
314 	LIBUNA_BASE64_VARIANT_ALPHABET_NORMAL | LIBUNA_BASE64_VARIANT_CHARACTER_LIMIT_76 | LIBUNA_BASE64_VARIANT_PADDING_REQUIRED
315 
316 #define LIBUNA_BASE64_VARIANT_MIME \
317 	LIBUNA_BASE64_VARIANT_RFC2045
318 
319 #define LIBUNA_BASE64_VARIANT_URL \
320 	LIBUNA_BASE64_VARIANT_ALPHABET_URL | LIBUNA_BASE64_VARIANT_CHARACTER_LIMIT_NONE | LIBUNA_BASE64_VARIANT_PADDING_OPTIONAL
321 
322 /* TODO
323 #define LIBUNA_BASE64_VARIANT_RFC3548
324 #define LIBUNA_BASE64_VARIANT_RFC4648
325 */
326 
327 /* Base64 processing flags
328  */
329 enum LIBUNA_BASE64_FLAGS
330 {
331 	LIBUNA_BASE64_FLAG_STRIP_WHITESPACE			= 0x01
332 };
333 
334 #endif /* !defined( HAVE_LOCAL_LIBUNA ) */
335 
336 #define LIBUNA_BASE32_VARIANT_ENCODING_BYTE_STREAM		0
337 #define LIBUNA_BASE64_VARIANT_ENCODING_BYTE_STREAM		0
338 
339 /* Character case definitions
340  */
341 enum LIBUNA_CASE
342 {
343 	LIBUNA_CASE_LOWER					= (uint8_t) 'l',
344 	LIBUNA_CASE_MIXED					= (uint8_t) 'm',
345 	LIBUNA_CASE_UPPER					= (uint8_t) 'u'
346 };
347 
348 /* Strip mode definitions
349  */
350 enum LIBUNA_STRIP_MODES
351 {
352 	LIBUNA_STRIP_MODE_LEADING_WHITESPACE,
353 	LIBUNA_STRIP_MODE_NON_WHITESPACE,
354 	LIBUNA_STRIP_MODE_TRAILING_WHITESPACE,
355 	LIBUNA_STRIP_MODE_INVALID_CHARACTER
356 };
357 
358 /* Character definitions
359  */
360 #define LIBUNA_UNICODE_REPLACEMENT_CHARACTER			0x0000fffdUL
361 #define LIBUNA_UNICODE_BASIC_MULTILINGUAL_PLANE_MAX		0x0000ffffUL
362 #define LIBUNA_UNICODE_SURROGATE_LOW_RANGE_START		0x0000dc00UL
363 #define LIBUNA_UNICODE_SURROGATE_LOW_RANGE_END			0x0000dfffUL
364 #define LIBUNA_UNICODE_SURROGATE_HIGH_RANGE_START		0x0000d800UL
365 #define LIBUNA_UNICODE_SURROGATE_HIGH_RANGE_END			0x0000dbffUL
366 #define LIBUNA_UNICODE_CHARACTER_MAX				0x0010ffffUL
367 
368 #define LIBUNA_UTF16_CHARACTER_MAX				0x0010ffffUL
369 #define LIBUNA_UTF32_CHARACTER_MAX				0x7fffffffUL
370 
371 #define LIBUNA_ASCII_REPLACEMENT_CHARACTER			0x1a
372 
373 /* UTF-7 definitions
374  */
375 #define	LIBUNA_UTF7_IS_BASE64_ENCODED				0x80000000UL
376 
377 #endif /* !defined( _LIBUNA_INTERNAL_DEFINITIONS_H ) */
378 
379