mirror of
https://github.com/debauchee/barrier.git
synced 2024-11-23 20:12:39 +03:00
fee4095624
synergy.cpp and server.cpp into cmd/synergyd as synergyd.cpp. Moved and renamed related files. Moved remaining source files into lib/.... Modified and added makefiles as appropriate. Result is that library files are under lib with each library in its own directory and program files are under cmd with each command in its own directory.
131 lines
4.1 KiB
C++
131 lines
4.1 KiB
C++
#ifndef CUNICODE_H
|
|
#define CUNICODE_H
|
|
|
|
#include "CString.h"
|
|
#include "BasicTypes.h"
|
|
#include <wchar.h>
|
|
|
|
//! Unicode utility functions
|
|
/*!
|
|
This class provides functions for converting between various Unicode
|
|
encodings and the current locale encoding.
|
|
*/
|
|
class CUnicode {
|
|
public:
|
|
//! @name accessors
|
|
//@{
|
|
|
|
//! Test UTF-8 string for validity
|
|
/*!
|
|
Returns true iff the string contains a valid sequence of UTF-8
|
|
encoded characters.
|
|
*/
|
|
static bool isUTF8(const CString&);
|
|
|
|
//! Convert from UTF-8 to UCS-2 encoding
|
|
/*!
|
|
Convert from UTF-8 to UCS-2. If errors is not NULL then *errors
|
|
is set to true iff any character could not be encoded in UCS-2.
|
|
Decoding errors do not set *errors.
|
|
*/
|
|
static CString UTF8ToUCS2(const CString&, bool* errors = NULL);
|
|
|
|
//! Convert from UTF-8 to UCS-4 encoding
|
|
/*!
|
|
Convert from UTF-8 to UCS-4. If errors is not NULL then *errors
|
|
is set to true iff any character could not be encoded in UCS-4.
|
|
Decoding errors do not set *errors.
|
|
*/
|
|
static CString UTF8ToUCS4(const CString&, bool* errors = NULL);
|
|
|
|
//! Convert from UTF-8 to UTF-16 encoding
|
|
/*!
|
|
Convert from UTF-8 to UTF-16. If errors is not NULL then *errors
|
|
is set to true iff any character could not be encoded in UTF-16.
|
|
Decoding errors do not set *errors.
|
|
*/
|
|
static CString UTF8ToUTF16(const CString&, bool* errors = NULL);
|
|
|
|
//! Convert from UTF-8 to UTF-32 encoding
|
|
/*!
|
|
Convert from UTF-8 to UTF-32. If errors is not NULL then *errors
|
|
is set to true iff any character could not be encoded in UTF-32.
|
|
Decoding errors do not set *errors.
|
|
*/
|
|
static CString UTF8ToUTF32(const CString&, bool* errors = NULL);
|
|
|
|
//! Convert from UTF-8 to the current locale encoding
|
|
/*!
|
|
Convert from UTF-8 to the current locale encoding. If errors is not
|
|
NULL then *errors is set to true iff any character could not be encoded.
|
|
Decoding errors do not set *errors.
|
|
*/
|
|
static CString UTF8ToText(const CString&, bool* errors = NULL);
|
|
|
|
//! Convert from UCS-2 to UTF-8
|
|
/*!
|
|
Convert from UCS-2 to UTF-8. If errors is not NULL then *errors is
|
|
set to true iff any character could not be decoded.
|
|
*/
|
|
static CString UCS2ToUTF8(const CString&, bool* errors = NULL);
|
|
|
|
//! Convert from UCS-4 to UTF-8
|
|
/*!
|
|
Convert from UCS-4 to UTF-8. If errors is not NULL then *errors is
|
|
set to true iff any character could not be decoded.
|
|
*/
|
|
static CString UCS4ToUTF8(const CString&, bool* errors = NULL);
|
|
|
|
//! Convert from UTF-16 to UTF-8
|
|
/*!
|
|
Convert from UTF-16 to UTF-8. If errors is not NULL then *errors is
|
|
set to true iff any character could not be decoded.
|
|
*/
|
|
static CString UTF16ToUTF8(const CString&, bool* errors = NULL);
|
|
|
|
//! Convert from UTF-32 to UTF-8
|
|
/*!
|
|
Convert from UTF-32 to UTF-8. If errors is not NULL then *errors is
|
|
set to true iff any character could not be decoded.
|
|
*/
|
|
static CString UTF32ToUTF8(const CString&, bool* errors = NULL);
|
|
|
|
//! Convert from the current locale encoding to UTF-8
|
|
/*!
|
|
Convert from the current locale encoding to UTF-8. If errors is not
|
|
NULL then *errors is set to true iff any character could not be decoded.
|
|
*/
|
|
static CString textToUTF8(const CString&, bool* errors = NULL);
|
|
|
|
//@}
|
|
|
|
private:
|
|
// convert UTF8 to wchar_t string (using whatever encoding is native
|
|
// to the platform). caller must delete[] the returned string. the
|
|
// string is *not* nul terminated; the length (in characters) is
|
|
// returned in size.
|
|
static wchar_t* UTF8ToWideChar(const CString&,
|
|
UInt32& size, bool* errors);
|
|
|
|
// convert nul terminated wchar_t string (in platform's native
|
|
// encoding) to UTF8.
|
|
static CString wideCharToUTF8(const wchar_t*,
|
|
UInt32 size, bool* errors);
|
|
|
|
// internal conversion to UTF8
|
|
static CString doUCS2ToUTF8(const UInt8* src, UInt32 n, bool* errors);
|
|
static CString doUCS4ToUTF8(const UInt8* src, UInt32 n, bool* errors);
|
|
static CString doUTF16ToUTF8(const UInt8* src, UInt32 n, bool* errors);
|
|
static CString doUTF32ToUTF8(const UInt8* src, UInt32 n, bool* errors);
|
|
|
|
// convert characters to/from UTF8
|
|
static UInt32 fromUTF8(const UInt8*& src, UInt32& size);
|
|
static void toUTF8(CString& dst, UInt32 c, bool* errors);
|
|
|
|
private:
|
|
static UInt32 s_invalid;
|
|
static UInt32 s_replacement;
|
|
};
|
|
|
|
#endif
|