1 /*
2  * The internal definitions
3  *
4  * Copyright (C) 2008-2021, 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						20210801
39 
40 /* The libuna version string
41  */
42 #define LIBUNA_VERSION_STRING					"20210801"
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_UTF16_LITTLE_ENDIAN			= 1200,
87 	LIBUNA_CODEPAGE_UTF16_BIG_ENDIAN			= 1201,
88 	LIBUNA_CODEPAGE_UTF32_LITTLE_ENDIAN			= 12000,
89 	LIBUNA_CODEPAGE_UTF32_BIG_ENDIAN			= 12001,
90 	LIBUNA_CODEPAGE_UTF7					= 65000,
91 	LIBUNA_CODEPAGE_UTF8					= 65001,
92 	LIBUNA_CODEPAGE_SCSU					= 65002,
93 
94 	LIBUNA_CODEPAGE_WINDOWS_874				= 874,
95 	LIBUNA_CODEPAGE_WINDOWS_932				= 932,
96 	LIBUNA_CODEPAGE_WINDOWS_936				= 936,
97 	LIBUNA_CODEPAGE_WINDOWS_949				= 949,
98 	LIBUNA_CODEPAGE_WINDOWS_950				= 950,
99 	LIBUNA_CODEPAGE_WINDOWS_1250				= 1250,
100 	LIBUNA_CODEPAGE_WINDOWS_1251				= 1251,
101 	LIBUNA_CODEPAGE_WINDOWS_1252				= 1252,
102 	LIBUNA_CODEPAGE_WINDOWS_1253				= 1253,
103 	LIBUNA_CODEPAGE_WINDOWS_1254				= 1254,
104 	LIBUNA_CODEPAGE_WINDOWS_1255				= 1255,
105 	LIBUNA_CODEPAGE_WINDOWS_1256				= 1256,
106 	LIBUNA_CODEPAGE_WINDOWS_1257				= 1257,
107 	LIBUNA_CODEPAGE_WINDOWS_1258				= 1258
108 };
109 
110 #define LIBUNA_CODEPAGE_US_ASCII				LIBUNA_CODEPAGE_ASCII
111 
112 #define LIBUNA_CODEPAGE_ISO_WESTERN_EUROPEAN			LIBUNA_CODEPAGE_ISO_8859_1
113 #define LIBUNA_CODEPAGE_ISO_CENTRAL_EUROPEAN			LIBUNA_CODEPAGE_ISO_8859_2
114 #define LIBUNA_CODEPAGE_ISO_SOUTH_EUROPEAN			LIBUNA_CODEPAGE_ISO_8859_3
115 #define LIBUNA_CODEPAGE_ISO_NORTH_EUROPEAN			LIBUNA_CODEPAGE_ISO_8859_4
116 #define LIBUNA_CODEPAGE_ISO_CYRILLIC				LIBUNA_CODEPAGE_ISO_8859_5
117 #define LIBUNA_CODEPAGE_ISO_ARABIC				LIBUNA_CODEPAGE_ISO_8859_6
118 #define LIBUNA_CODEPAGE_ISO_GREEK				LIBUNA_CODEPAGE_ISO_8859_7
119 #define LIBUNA_CODEPAGE_ISO_HEBREW				LIBUNA_CODEPAGE_ISO_8859_8
120 #define LIBUNA_CODEPAGE_ISO_TURKISH				LIBUNA_CODEPAGE_ISO_8859_9
121 #define LIBUNA_CODEPAGE_ISO_NORDIC				LIBUNA_CODEPAGE_ISO_8859_10
122 #define LIBUNA_CODEPAGE_ISO_THAI				LIBUNA_CODEPAGE_ISO_8859_11
123 #define LIBUNA_CODEPAGE_ISO_BALTIC				LIBUNA_CODEPAGE_ISO_8859_13
124 #define LIBUNA_CODEPAGE_ISO_CELTIC				LIBUNA_CODEPAGE_ISO_8859_14
125 
126 #define LIBUNA_CODEPAGE_ISO_LATIN_1				LIBUNA_CODEPAGE_ISO_8859_1
127 #define LIBUNA_CODEPAGE_ISO_LATIN_2				LIBUNA_CODEPAGE_ISO_8859_2
128 #define LIBUNA_CODEPAGE_ISO_LATIN_3				LIBUNA_CODEPAGE_ISO_8859_3
129 #define LIBUNA_CODEPAGE_ISO_LATIN_4				LIBUNA_CODEPAGE_ISO_8859_4
130 #define LIBUNA_CODEPAGE_ISO_LATIN_5				LIBUNA_CODEPAGE_ISO_8859_9
131 #define LIBUNA_CODEPAGE_ISO_LATIN_6				LIBUNA_CODEPAGE_ISO_8859_10
132 #define LIBUNA_CODEPAGE_ISO_LATIN_7				LIBUNA_CODEPAGE_ISO_8859_13
133 #define LIBUNA_CODEPAGE_ISO_LATIN_8				LIBUNA_CODEPAGE_ISO_8859_14
134 #define LIBUNA_CODEPAGE_ISO_LATIN_9				LIBUNA_CODEPAGE_ISO_8859_15
135 #define LIBUNA_CODEPAGE_ISO_LATIN_10				LIBUNA_CODEPAGE_ISO_8859_16
136 
137 #define LIBUNA_CODEPAGE_KOI8_RUSSIAN				LIBUNA_CODEPAGE_KOI8_R
138 #define LIBUNA_CODEPAGE_KOI8_UKRAINIAN				LIBUNA_CODEPAGE_KOI8_U
139 
140 #define LIBUNA_CODEPAGE_OEM_874					LIBUNA_CODEPAGE_WINDOWS_874
141 #define LIBUNA_CODEPAGE_OEM_932					LIBUNA_CODEPAGE_WINDOWS_932
142 #define LIBUNA_CODEPAGE_OEM_936					LIBUNA_CODEPAGE_WINDOWS_936
143 #define LIBUNA_CODEPAGE_OEM_949					LIBUNA_CODEPAGE_WINDOWS_949
144 #define LIBUNA_CODEPAGE_OEM_950					LIBUNA_CODEPAGE_WINDOWS_950
145 #define LIBUNA_CODEPAGE_OEM_1258				LIBUNA_CODEPAGE_WINDOWS_1258
146 
147 #define LIBUNA_CODEPAGE_OEM_US_ENGLISH				LIBUNA_CODEPAGE_OEM_437
148 #define LIBUNA_CODEPAGE_OEM_ARABIC				LIBUNA_CODEPAGE_OEM_720
149 #define LIBUNA_CODEPAGE_OEM_GREEK				LIBUNA_CODEPAGE_OEM_737
150 #define LIBUNA_CODEPAGE_OEM_BALTIC				LIBUNA_CODEPAGE_OEM_775
151 #define LIBUNA_CODEPAGE_OEM_LATIN_1				LIBUNA_CODEPAGE_OEM_850
152 #define LIBUNA_CODEPAGE_OEM_LATIN_2				LIBUNA_CODEPAGE_OEM_852
153 #define LIBUNA_CODEPAGE_OEM_CYRILLIC				LIBUNA_CODEPAGE_OEM_855
154 #define LIBUNA_CODEPAGE_OEM_TURKISH				LIBUNA_CODEPAGE_OEM_857
155 #define LIBUNA_CODEPAGE_OEM_LATIN_1_WITH_EURO			LIBUNA_CODEPAGE_OEM_858
156 #define LIBUNA_CODEPAGE_OEM_HEBREW				LIBUNA_CODEPAGE_OEM_862
157 #define LIBUNA_CODEPAGE_OEM_RUSSIAN				LIBUNA_CODEPAGE_OEM_866
158 #define LIBUNA_CODEPAGE_OEM_THAI				LIBUNA_CODEPAGE_WINDOWS_874
159 #define LIBUNA_CODEPAGE_OEM_JAPANESE				LIBUNA_CODEPAGE_WINDOWS_932
160 #define LIBUNA_CODEPAGE_OEM_CHINESE_SIMPLIFIED			LIBUNA_CODEPAGE_WINDOWS_936
161 #define LIBUNA_CODEPAGE_OEM_KOREAN				LIBUNA_CODEPAGE_WINDOWS_949
162 #define LIBUNA_CODEPAGE_OEM_CHINESE_TRADITIONAL			LIBUNA_CODEPAGE_WINDOWS_950
163 #define LIBUNA_CODEPAGE_OEM_VIETNAMESE				LIBUNA_CODEPAGE_WINDOWS_1258
164 
165 #define LIBUNA_CODEPAGE_WINDOWS_THAI				LIBUNA_CODEPAGE_WINDOWS_874
166 #define LIBUNA_CODEPAGE_WINDOWS_JAPANESE			LIBUNA_CODEPAGE_WINDOWS_932
167 #define LIBUNA_CODEPAGE_WINDOWS_CHINESE_SIMPLIFIED		LIBUNA_CODEPAGE_WINDOWS_936
168 #define LIBUNA_CODEPAGE_WINDOWS_KOREAN				LIBUNA_CODEPAGE_WINDOWS_949
169 #define LIBUNA_CODEPAGE_WINDOWS_CHINESE_TRADITIONAL		LIBUNA_CODEPAGE_WINDOWS_950
170 #define LIBUNA_CODEPAGE_WINDOWS_CENTRAL_EUROPEAN		LIBUNA_CODEPAGE_WINDOWS_1250
171 #define LIBUNA_CODEPAGE_WINDOWS_CYRILLIC			LIBUNA_CODEPAGE_WINDOWS_1251
172 #define LIBUNA_CODEPAGE_WINDOWS_WESTERN_EUROPEAN		LIBUNA_CODEPAGE_WINDOWS_1252
173 #define LIBUNA_CODEPAGE_WINDOWS_GREEK				LIBUNA_CODEPAGE_WINDOWS_1253
174 #define LIBUNA_CODEPAGE_WINDOWS_TURKISH				LIBUNA_CODEPAGE_WINDOWS_1254
175 #define LIBUNA_CODEPAGE_WINDOWS_HEBREW				LIBUNA_CODEPAGE_WINDOWS_1255
176 #define LIBUNA_CODEPAGE_WINDOWS_ARABIC				LIBUNA_CODEPAGE_WINDOWS_1256
177 #define LIBUNA_CODEPAGE_WINDOWS_BALTIC				LIBUNA_CODEPAGE_WINDOWS_1257
178 #define LIBUNA_CODEPAGE_WINDOWS_VIETNAMESE			LIBUNA_CODEPAGE_WINDOWS_1258
179 
180 #define LIBUNA_CODEPAGE_SHIFT_JIS				LIBUNA_CODEPAGE_WINDOWS_932
181 #define LIBUNA_CODEPAGE_GB2312					LIBUNA_CODEPAGE_WINDOWS_936
182 
183 /* The comparison function definitions
184  */
185 enum LIBUNA_COMPARE_DEFINITIONS
186 {
187 	/* The first string is less than the second string
188 	 */
189 	LIBUNA_COMPARE_LESS,
190 
191 	/* The first and second strings are equal
192 	 */
193 	LIBUNA_COMPARE_EQUAL,
194 
195 	/* The first string is greater than the second string
196 	 */
197 	LIBUNA_COMPARE_GREATER
198 };
199 
200 /* Base16 variants
201  * Byte:
202  * 0 - 1	Character limit
203  * 2 - 3	Reserved
204  * 4		Case (0 not supported)
205  * 5 - 6	Reserved
206  * 7		String encoding (0 is byte stream)
207  */
208 enum LIBUNA_BASE16_VARIANTS
209 {
210 	LIBUNA_BASE16_VARIANT_CASE_LOWER			= 0x00010000UL,
211 	LIBUNA_BASE16_VARIANT_CASE_MIXED			= 0x00020000UL,
212 	LIBUNA_BASE16_VARIANT_CASE_UPPER			= 0x00030000UL,
213 
214 	LIBUNA_BASE16_VARIANT_CHARACTER_LIMIT_NONE		= 0x00000000UL,
215 	LIBUNA_BASE16_VARIANT_CHARACTER_LIMIT_64		= 0x00000040UL,
216 	LIBUNA_BASE16_VARIANT_CHARACTER_LIMIT_76		= 0x0000004cUL,
217 
218 	LIBUNA_BASE16_VARIANT_ENCODING_UTF16_BIG_ENDIAN		= 0x10000000UL,
219 	LIBUNA_BASE16_VARIANT_ENCODING_UTF16_LITTLE_ENDIAN	= 0x20000000UL,
220 	LIBUNA_BASE16_VARIANT_ENCODING_UTF32_BIG_ENDIAN		= 0x30000000UL,
221 	LIBUNA_BASE16_VARIANT_ENCODING_UTF32_LITTLE_ENDIAN	= 0x40000000UL
222 };
223 
224 #define LIBUNA_BASE16_VARIANT_ENCODING_BYTE_STREAM		0
225 
226 #define LIBUNA_BASE16_VARIANT_RFC4648 \
227 	LIBUNA_BASE16_VARIANT_CASE_MIXED | LIBUNA_BASE16_VARIANT_CHARACTER_LIMIT_NONE
228 
229 /* Base16 processing flags
230  */
231 enum LIBUNA_BASE16_FLAGS
232 {
233 	LIBUNA_BASE16_FLAG_STRIP_WHITESPACE			= 0x01
234 };
235 
236 /* Base32 variants
237  * Byte:
238  * 0 - 1	Character limit
239  * 2 - 3	Reserved
240  * 4		Alphabet type (0 not supported)
241  * 5		Reserved
242  * 6    	Padding (0 not supported)
243  * 7		String encoding (0 is byte stream)
244  */
245 enum LIBUNA_BASE32_VARIANTS
246 {
247 	LIBUNA_BASE32_VARIANT_ALPHABET_NORMAL			= 0x00010000UL,
248 	LIBUNA_BASE32_VARIANT_ALPHABET_HEX			= 0x00020000UL,
249 
250 	LIBUNA_BASE32_VARIANT_CHARACTER_LIMIT_NONE		= 0x00000000UL,
251 	LIBUNA_BASE32_VARIANT_CHARACTER_LIMIT_64		= 0x00000040UL,
252 
253 	LIBUNA_BASE32_VARIANT_PADDING_NONE			= 0x01000000UL,
254 	LIBUNA_BASE32_VARIANT_PADDING_OPTIONAL			= 0x02000000UL,
255 	LIBUNA_BASE32_VARIANT_PADDING_REQUIRED			= 0x03000000UL,
256 
257 	LIBUNA_BASE32_VARIANT_ENCODING_UTF16_BIG_ENDIAN		= 0x10000000UL,
258 	LIBUNA_BASE32_VARIANT_ENCODING_UTF16_LITTLE_ENDIAN	= 0x20000000UL,
259 	LIBUNA_BASE32_VARIANT_ENCODING_UTF32_BIG_ENDIAN		= 0x30000000UL,
260 	LIBUNA_BASE32_VARIANT_ENCODING_UTF32_LITTLE_ENDIAN	= 0x40000000UL
261 };
262 
263 #define LIBUNA_BASE32_VARIANT_RFC4648 \
264 	LIBUNA_BASE32_VARIANT_ALPHABET_NORMAL | LIBUNA_BASE32_VARIANT_CHARACTER_LIMIT_NONE | LIBUNA_BASE32_VARIANT_PADDING_REQUIRED
265 
266 #define LIBUNA_BASE32_VARIANT_HEX \
267 	LIBUNA_BASE32_VARIANT_ALPHABET_HEX | LIBUNA_BASE32_VARIANT_CHARACTER_LIMIT_NONE | LIBUNA_BASE32_VARIANT_PADDING_REQUIRED
268 
269 /* Base32 processing flags
270  */
271 enum LIBUNA_BASE32_FLAGS
272 {
273 	LIBUNA_BASE32_FLAG_STRIP_WHITESPACE			= 0x01
274 };
275 
276 /* Base64 variants
277  * Byte:
278  * 0 - 1	Character limit
279  * 2 - 3	Reserved
280  * 4		Alphabet type (0 not supported)
281  * 5		Reserved
282  * 6    	Padding (0 not supported)
283  * 7		String encoding (0 is byte stream)
284  */
285 enum LIBUNA_BASE64_VARIANTS
286 {
287 	LIBUNA_BASE64_VARIANT_ALPHABET_NORMAL			= 0x00010000UL,
288 	LIBUNA_BASE64_VARIANT_ALPHABET_URL			= 0x00020000UL,
289 
290 	LIBUNA_BASE64_VARIANT_CHARACTER_LIMIT_NONE		= 0x00000000UL,
291 	LIBUNA_BASE64_VARIANT_CHARACTER_LIMIT_64		= 0x00000040UL,
292 	LIBUNA_BASE64_VARIANT_CHARACTER_LIMIT_76		= 0x0000004cUL,
293 
294 	/* No padding */
295 	LIBUNA_BASE64_VARIANT_PADDING_NONE			= 0x01000000UL,
296 	/* Padding is optional */
297 	LIBUNA_BASE64_VARIANT_PADDING_OPTIONAL			= 0x02000000UL,
298 	/* Padding is required */
299 	LIBUNA_BASE64_VARIANT_PADDING_REQUIRED			= 0x03000000UL,
300 	/* Invalid base64 characters are considered padding */
301 	LIBUNA_BASE64_VARIANT_PADDING_INVALID			= 0x04000000UL,
302 
303 	LIBUNA_BASE64_VARIANT_ENCODING_UTF16_BIG_ENDIAN		= 0x10000000UL,
304 	LIBUNA_BASE64_VARIANT_ENCODING_UTF16_LITTLE_ENDIAN	= 0x20000000UL,
305 	LIBUNA_BASE64_VARIANT_ENCODING_UTF32_BIG_ENDIAN		= 0x30000000UL,
306 	LIBUNA_BASE64_VARIANT_ENCODING_UTF32_LITTLE_ENDIAN	= 0x40000000UL
307 };
308 
309 #define LIBUNA_BASE64_VARIANT_RFC1421 \
310 	LIBUNA_BASE64_VARIANT_ALPHABET_NORMAL | LIBUNA_BASE64_VARIANT_CHARACTER_LIMIT_64 | LIBUNA_BASE64_VARIANT_PADDING_REQUIRED
311 
312 #define LIBUNA_BASE64_VARIANT_PEM \
313 	LIBUNA_BASE64_VARIANT_RFC1421
314 
315 #define LIBUNA_BASE64_VARIANT_RFC1642 \
316 	LIBUNA_BASE64_VARIANT_ALPHABET_NORMAL | LIBUNA_BASE64_VARIANT_CHARACTER_LIMIT_NONE | LIBUNA_BASE64_VARIANT_PADDING_NONE
317 
318 #define LIBUNA_BASE64_VARIANT_UTF7 \
319 	LIBUNA_BASE64_VARIANT_ALPHABET_NORMAL | LIBUNA_BASE64_VARIANT_CHARACTER_LIMIT_NONE | LIBUNA_BASE64_VARIANT_PADDING_INVALID
320 
321 #define LIBUNA_BASE64_VARIANT_RFC2045 \
322 	LIBUNA_BASE64_VARIANT_ALPHABET_NORMAL | LIBUNA_BASE64_VARIANT_CHARACTER_LIMIT_76 | LIBUNA_BASE64_VARIANT_PADDING_REQUIRED
323 
324 #define LIBUNA_BASE64_VARIANT_MIME \
325 	LIBUNA_BASE64_VARIANT_RFC2045
326 
327 #define LIBUNA_BASE64_VARIANT_URL \
328 	LIBUNA_BASE64_VARIANT_ALPHABET_URL | LIBUNA_BASE64_VARIANT_CHARACTER_LIMIT_NONE | LIBUNA_BASE64_VARIANT_PADDING_OPTIONAL
329 
330 /* TODO
331 #define LIBUNA_BASE64_VARIANT_RFC3548
332 #define LIBUNA_BASE64_VARIANT_RFC4648
333 */
334 
335 /* Base64 processing flags
336  */
337 enum LIBUNA_BASE64_FLAGS
338 {
339 	LIBUNA_BASE64_FLAG_STRIP_WHITESPACE			= 0x01
340 };
341 
342 #endif /* !defined( HAVE_LOCAL_LIBUNA ) */
343 
344 #define LIBUNA_BASE32_VARIANT_ENCODING_BYTE_STREAM		0
345 #define LIBUNA_BASE64_VARIANT_ENCODING_BYTE_STREAM		0
346 
347 /* Character case definitions
348  */
349 enum LIBUNA_CASE
350 {
351 	LIBUNA_CASE_LOWER					= (uint8_t) 'l',
352 	LIBUNA_CASE_MIXED					= (uint8_t) 'm',
353 	LIBUNA_CASE_UPPER					= (uint8_t) 'u'
354 };
355 
356 /* Strip mode definitions
357  */
358 enum LIBUNA_STRIP_MODES
359 {
360 	LIBUNA_STRIP_MODE_LEADING_WHITESPACE,
361 	LIBUNA_STRIP_MODE_NON_WHITESPACE,
362 	LIBUNA_STRIP_MODE_TRAILING_WHITESPACE,
363 	LIBUNA_STRIP_MODE_INVALID_CHARACTER
364 };
365 
366 /* Character definitions
367  */
368 #define LIBUNA_UNICODE_REPLACEMENT_CHARACTER			0x0000fffdUL
369 #define LIBUNA_UNICODE_BASIC_MULTILINGUAL_PLANE_MAX		0x0000ffffUL
370 #define LIBUNA_UNICODE_SURROGATE_LOW_RANGE_START		0x0000dc00UL
371 #define LIBUNA_UNICODE_SURROGATE_LOW_RANGE_END			0x0000dfffUL
372 #define LIBUNA_UNICODE_SURROGATE_HIGH_RANGE_START		0x0000d800UL
373 #define LIBUNA_UNICODE_SURROGATE_HIGH_RANGE_END			0x0000dbffUL
374 #define LIBUNA_UNICODE_CHARACTER_MAX				0x0010ffffUL
375 
376 #define LIBUNA_UTF16_CHARACTER_MAX				0x0010ffffUL
377 #define LIBUNA_UTF32_CHARACTER_MAX				0x7fffffffUL
378 
379 #define LIBUNA_ASCII_REPLACEMENT_CHARACTER			0x1a
380 
381 /* UTF-7 definitions
382  */
383 #define	LIBUNA_UTF7_IS_BASE64_ENCODED				0x80000000UL
384 
385 #endif /* !defined( _LIBUNA_INTERNAL_DEFINITIONS_H ) */
386 
387