wxWidgets/interface/wx/unichar.h

218 lines
5.6 KiB
C
Raw Normal View History

/////////////////////////////////////////////////////////////////////////////
// Name: unichar.h
// Purpose: interface of wxUniChar
// Author: wxWidgets team
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
/**
@class wxUniChar
This class represents a single Unicode character. It can be converted to
and from @c char or @c wchar_t and implements commonly used character operations.
@library{wxbase}
@category{data}
*/
class wxUniChar
{
public:
/**
A type capable of holding any Unicode code point.
We do not use wchar_t as it cannot do the job on Win32,
where wchar_t is a 16-bit type (wchar_t* is encoded using UTF-16 on Win32).
*/
typedef wxUint32 value_type;
/**
Default ctor.
*/
wxUniChar();
//@{
/**
Create a character from the 8-bit character value @a c using the
current locale encoding.
*/
wxUniChar(char c);
wxUniChar(unsigned char c);
//@}
wxUniChar(int c);
wxUniChar(unsigned int c);
wxUniChar(long int c);
wxUniChar(unsigned long int c);
wxUniChar(short int c);
wxUniChar(unsigned short int c);
wxUniChar(wxLongLong_t c);
wxUniChar(wxULongLong_t c);
wxUniChar(const wxUniCharRef& c);
/**
Returns Unicode code point value of the character.
*/
value_type GetValue() const;
/**
Returns true if the character is an ASCII character (i.e.\ if its value is less than 128).
*/
bool IsAscii() const;
/**
Returns true if the character is representable as a single byte in the
current locale encoding.
This function only returns true if the character can be converted in
exactly one byte, e.g. it only returns true for 7 bit ASCII characters
when the encoding used is UTF-8.
It is mostly useful to test if the character can be passed to functions
taking a char and is used by wxWidgets itself for this purpose.
@param c
An output pointer to the value of this Unicode character as a @c
char. Must be non-@NULL.
@return
@true if the object is an 8 bit char and @a c was filled with its
value as char or @false otherwise (@a c won't be modified then).
@see IsAscii()
@since 2.9.1
*/
bool GetAsChar(char *c) const;
/**
Returns true if the character is a BMP character (i.e.\ if its value is less than 0x10000).
@since 3.1.1
*/
bool IsBMP() const;
/**
Returns true if the character is a BMP character (i.e.\ if its value is less than 0x10000).
@param value
The Unicode code point of the character.
@since 3.1.1
*/
static bool IsBMP(wxUint32 value);
/**
Returns true if the character is a supplementary character (i.e.\ between 0x10000 and 0x10FFFF).
@since 3.1.1
*/
bool IsSupplementary() const;
/**
Returns true if the character is a supplementary character (i.e.\ between 0x10000 and 0x10FFFF).
@param value
The Unicode code point of the character.
@since 3.1.1
*/
static bool IsSupplementary(wxUint32 value);
/**
Returns the high surrogate code unit for the supplementary character.
@pre IsSupplementary() const
@since 3.1.1
*/
wxUint16 HighSurrogate() const;
/**
Returns the high surrogate code unit for the supplementary character.
@param value
The Unicode code point of the character.
@pre IsSupplementary(wxUint32 value)
@since 3.1.1
*/
static wxUint16 HighSurrogate(wxUint32 value);
/**
Returns the low surrogate code unit for the supplementary character.
@pre IsSupplementary() const
@since 3.1.1
*/
wxUint16 LowSurrogate() const;
/**
Returns the low surrogate code unit for the supplementary character.
@param value
The Unicode code point of the character.
@pre IsSupplementary(wxUint32 value)
@since 3.1.1
*/
static wxUint16 LowSurrogate(wxUint32 value);
//@{
/**
Conversions to char and wchar_t types: all of those are needed to be
able to pass wxUniChars to various standard narrow and wide character
functions.
*/
operator char() const;
operator unsigned char() const;
operator wchar_t() const;
operator int() const;
operator unsigned int() const;
operator long int() const;
operator unsigned long int() const;
operator short int() const;
operator unsigned short int() const;
operator wxLongLong_t() const;
operator wxULongLong_t() const;
//@}
//@{
/**
Assignment operators
*/
wxUniChar& operator=(const wxUniChar& c);
wxUniChar& operator=(const wxUniCharRef& c);
wxUniChar& operator=(char c);
wxUniChar& operator=(unsigned char c);
wxUniChar& operator=(wchar_t c);
wxUniChar& operator=(int c);
wxUniChar& operator=(unsigned int c);
wxUniChar& operator=(long int c);
wxUniChar& operator=(unsigned long int c);
wxUniChar& operator=(short int c);
wxUniChar& operator=(unsigned short int c);
wxUniChar& operator=(wxLongLong_t c);
wxUniChar& operator=(wxULongLong_t c);
//@}
};
/**
@class wxUniCharRef
Writeable reference to a character in wxString.
This class can be used in the same way wxChar is used, except that changing
its value updates the underlying string object.
@library{wxbase}
@category{data}
*/
class wxUniCharRef
{
public:
};