haiku/headers/os/support/UTF8.h

61 lines
1.5 KiB
C
Raw Normal View History

/*
* Copyright 2007, Haiku, Inc. All Rights Reserved.
* Distributed under the terms of the MIT License.
*/
#ifndef _UTF8_H
#define _UTF8_H
#include <BeBuild.h>
#include <InterfaceDefs.h>
#include <SupportDefs.h>
// Conversion Flavors
enum {
B_ISO1_CONVERSION, // ISO 8859-x
B_ISO2_CONVERSION,
B_ISO3_CONVERSION,
B_ISO4_CONVERSION,
B_ISO5_CONVERSION,
B_ISO6_CONVERSION,
B_ISO7_CONVERSION,
B_ISO8_CONVERSION,
B_ISO9_CONVERSION,
B_ISO10_CONVERSION,
B_MAC_ROMAN_CONVERSION, // Macintosh Roman
B_SJIS_CONVERSION, // Shift-JIS
B_EUC_CONVERSION, // EUC Packed Japanese
B_JIS_CONVERSION, // JIS X 0208-1990
B_MS_WINDOWS_CONVERSION, // Windows Latin-1 Codepage 1252
B_UNICODE_CONVERSION, // Unicode 2.0, UCS-2
B_KOI8R_CONVERSION, // KOI8-R
B_MS_WINDOWS_1251_CONVERSION, // Windows Cyrillic Codepage 1251
B_MS_DOS_866_CONVERSION, // MS-DOS Codepage 866
B_MS_DOS_CONVERSION, // MS-DOS Codepage 437
B_EUC_KR_CONVERSION, // EUC Korean
B_ISO13_CONVERSION,
B_ISO14_CONVERSION,
B_ISO15_CONVERSION,
B_BIG5_CONVERSION, // Chinese Big5
B_GBK_CONVERSION, // Chinese GB18030
Refactoring of 8-bit encodings support. * Fixed issue introduced in hrev38139: restoring from the line drawing table was hard-coded to UTF8 Ground table. That is wrong: the table for currently configured encoding must be set back. Please look on using of _GuessGroundTable() for details; * Fixed issue introduced in hrev34894: the semantic of convert_xx_utf8 functions requires the destination length to be set equal to the target buffer size. Pre-hrev34894 usage of "homebrew" conversion functions was a bit different - destination length was set to 0. This made any converstions of input data useless and produce no visual results; * Private list of supported encodings (Encoding.cpp) was replaced by using BPrivate::BCharacterSetRoster functionality. That allows to use centralized info about encodings in unified with other applications (Mail & StyledEdit for example) way. Most of currently enumerated in UTF8.h encodings now available in Terminal. Note that UCS-2 and UTF-16 are temporary (???) excluded from the list of encodings supported by Terminal. * The B_UTF16_CONVERSION was added in system-wide UTF8.h declarations. This character set is available for enumerating by BCharacterSetRoster but not listed in public API. Looks like it was just missed; * Special note about "Text Encoding" entry in Preference File: So known "shortname" of encoding was used in the preferences file. For details look on the encodings list in previous version of Encoding.cpp. As result of migrating to BCharacterSet-provided resources this list was deleted and is not available anymore. Instead of it the IANA name of the character encoding targeted to be used for this purposes. Frankly speaking this part looks like not working at the moment. The value of text encoding is hardcoded to "UTF-8" now and is not affected by any operations in Terminal menu. Note that "shortname" for default encoding was "UTF8" but the saved value is "UTF-8" - and they are looking not dependent at all. So this change should not introduce any kind of backward incompatibility.
2011-11-13 16:17:38 +04:00
B_UTF16_CONVERSION // Unicode UTF-16
};
// Conversion Functions
#ifdef __cplusplus
status_t convert_to_utf8(uint32 sourceEncoding, const char* source,
int32* sourceLength, char* dest, int32* destLength, int32* state,
char substitute = B_SUBSTITUTE);
status_t convert_from_utf8(uint32 destEncoding, const char* source,
int32* sourceLength, char* dest, int32* destLength, int32* state,
char substitute = B_SUBSTITUTE);
#endif
#endif /* _UTF8_H */