class TChar |
Holds a character value and provides a number of utility functions to manipulate it and test its properties.
For example, there are functions to convert the character to uppercase and test whether or not it is a control character.
The character value is stored as a 32-bit unsigned integer. The shorthand "TChar value" is used to describe the character value wrapped by a TChar object.
TChar can be used to represent Unicode values outside plane 0 (that is, the extended Unicode range from 0x10000 to 0xFFFFF). This differentiates it from TText which can only be used for 16-bit Unicode character values.
Public Member Functions | |
---|---|
TChar() | |
TChar(TUint) | |
IMPORT_C TBool | Compose(TUint &, const TDesC16 &) |
IMPORT_C TBool | Decompose(TPtrC16 &) |
TBool | Eos() |
void | Fold() |
void | Fold(TInt) |
IMPORT_C TBdCategory | GetBdCategory() |
IMPORT_C TCategory | GetCategory() |
IMPORT_C TCjkWidth | GetCjkWidth() |
IMPORT_C TInt | GetCombiningClass() |
IMPORT_C void | GetInfo(TCharInfo &) |
IMPORT_C TUint | GetLowerCase() |
IMPORT_C TInt | GetNumericValue() |
IMPORT_C TUint | GetTitleCase() |
IMPORT_C TUint | GetUpperCase() |
IMPORT_C TBool | IsAlpha() |
IMPORT_C TBool | IsAlphaDigit() |
IMPORT_C TBool | IsAssigned() |
IMPORT_C TBool | IsControl() |
IMPORT_C TBool | IsDigit() |
IMPORT_C TBool | IsGraph() |
IMPORT_C TBool | IsHexDigit() |
IMPORT_C TBool | IsLower() |
IMPORT_C TBool | IsMirrored() |
IMPORT_C TBool | IsPrint() |
IMPORT_C TBool | IsPunctuation() |
IMPORT_C TBool | IsSpace() |
IMPORT_C TBool | IsTitle() |
IMPORT_C TBool | IsUpper() |
void | LowerCase() |
void | TitleCase() |
void | UpperCase() |
operator TUint() | |
TChar | operator+(TUint) |
TChar & | operator+=(TUint) |
TChar | operator-(TUint) |
TChar & | operator-=(TUint) |
Protected Member Functions | |
---|---|
void | SetChar(TUint) |
Public Member Enumerations | |
---|---|
enum | anonymous { EFoldCase = 1, EFoldAccents = 2, EFoldDigits = 4, EFoldSpaces = 8, EFoldKana = 16, EFoldWidth = 32, EFoldStandard = EFoldCase | EFoldAccents | EFoldDigits | EFoldSpaces, EFoldAll = -1 } |
enum | TBdCategory { ELeftToRight, ELeftToRightEmbedding, ELeftToRightOverride, ERightToLeft, ERightToLeftArabic, ERightToLeftEmbedding, ERightToLeftOverride, EPopDirectionalFormat, EEuropeanNumber, EEuropeanNumberSeparator, EEuropeanNumberTerminator, EArabicNumber, ECommonNumberSeparator, ENonSpacingMark, EBoundaryNeutral, EParagraphSeparator, ESegmentSeparator, EWhitespace, EOtherNeutral } |
enum | TCategory { EAlphaGroup = 0x00, ELetterOtherGroup = 0x10, ELetterModifierGroup = 0x20, EMarkGroup = 0x30, ENumberGroup = 0x40, EPunctuationGroup = 0x50, ESymbolGroup = 0x60, ESeparatorGroup = 0x70, EControlGroup = 0x80, EMaxAssignedGroup = 0xE0, EUnassignedGroup = 0xF0, ELuCategory = EAlphaGroup | 0, ELlCategory = EAlphaGroup | 1, ELtCategory = EAlphaGroup | 2, ELoCategory = ELetterOtherGroup | 0, EMaxLetterCategory = ELetterOtherGroup | 0x0F, ELmCategory = ELetterModifierGroup | 0, EMaxLetterOrLetterModifierCategory = ELetterModifierGroup | 0x0F, EMnCategory = EMarkGroup | 0, EMcCategory = EMarkGroup | 1, EMeCategory = EMarkGroup | 2, ENdCategory = ENumberGroup | 0, ENlCategory = ENumberGroup | 1, ENoCategory = ENumberGroup | 2, EPcCategory = EPunctuationGroup | 0, EPdCategory = EPunctuationGroup | 1, EPsCategory = EPunctuationGroup | 2, EPeCategory = EPunctuationGroup | 3, EPiCategory = EPunctuationGroup | 4, EPfCategory = EPunctuationGroup | 5, EPoCategory = EPunctuationGroup | 6, ESmCategory = ESymbolGroup | 0, EScCategory = ESymbolGroup | 1, ESkCategory = ESymbolGroup | 2, ESoCategory = ESymbolGroup | 3, EMaxGraphicCategory = ESymbolGroup | 0x0F, EZsCategory = ESeparatorGroup | 0, EMaxPrintableCategory = EZsCategory, EZlCategory = ESeparatorGroup | 1, EZpCategory = ESeparatorGroup | 2, ECcCategory = EControlGroup | 0, ECfCategory = EControlGroup | 1, EMaxAssignedCategory = EMaxAssignedGroup | 0x0F, ECsCategory = EUnassignedGroup | 0, ECoCategory = EUnassignedGroup | 1, ECnCategory = EUnassignedGroup | 2 } |
enum | TCjkWidth { ENeutralWidth, EHalfWidth, EFullWidth, ENarrow, EWide } |
enum | TEncoding { EUnicode, EShiftJIS } |
Private Attributes | |
---|---|
__DECLARE_TEST | |
TUint | iChar |
TChar | ( | ) | [inline] |
Default constructor.
Constructs this character object with an undefined value.
TChar | ( | TUint | aChar | ) | [inline] |
Constructs this character object and initialises it with the specified value.
TUint aChar | The initialisation value. |
IMPORT_C TBool | Compose | ( | TUint & | aResult, |
const TDesC16 & | aSource | |||
) | [static] |
TBool | Eos | ( | ) | const [inline] |
Tests whether the character is the C/C++ end-of-string character - 0.
True, if the character is 0; false, otherwise.
void | Fold | ( | ) | [inline] |
Converts the character to a form which can be used in tolerant comparisons without control over the operations performed.
Tolerant comparisons are those which ignore character differences like case and accents.
This function can be used when searching for a string in a text file or a file in a directory. Folding performs the following conversions: converts to lowercase, strips accents, converts all digits representing the values 0..9 to the ordinary digit characters '0'..'9', converts all spaces (standard, non-break, fixed-width, ideographic, etc.) to the ordinary space character (0x0020), converts Japanese characters in the hiragana syllabary to katakana, and converts East Asian halfwidth and fullwidth variants to their ordinary forms. You can choose to perform any subset of these operations by using the other function overload.
void | Fold | ( | TInt | aFlags | ) | [inline] |
Converts the character to a form which can be used in tolerant comparisons allowing selection of the specific fold operations to be performed.
TInt aFlags | Flags which define the operations to be performed. The values are defined in the enum beginning with EFoldCase. |
void | LowerCase | ( | ) | [inline] |
Converts the character to its lowercase form.
Characters lacking a lowercase form are unchanged.
void | TitleCase | ( | ) | [inline] |
Converts the character to its titlecase form.
The titlecase form of a character is identical to its uppercase form unless a specific titlecase form exists. Characters lacking a titlecase form are unchanged.
void | UpperCase | ( | ) | [inline] |
Converts the character to its uppercase form.
Characters lacking an uppercase form are unchanged.
operator TUint | ( | ) | const [inline] |
Gets the value of the character as an unsigned integer.
The operator casts a TChar to a TUint, returning the TUint value wrapped by this character object.
TChar | operator+ | ( | TUint | aChar | ) | [inline] |
Gets the result of adding an unsigned integer value to this character object.
This character object is not changed.
A character object whose value is the result of the addition operation.
TUint aChar | The value to be added. |
TChar & | operator+= | ( | TUint | aChar | ) | [inline] |
Adds an unsigned integer value to this character object.
This character object is changed by the operation.
A reference to this character object.
TUint aChar | The value to be added. |
TChar | operator- | ( | TUint | aChar | ) | [inline] |
Gets the result of subtracting an unsigned integer value from this character object.
This character object is not changed.
A character object whose value is the result of the subtraction operation.
TUint aChar | The value to be subtracted. |
TChar & | operator-= | ( | TUint | aChar | ) | [inline] |
Subtracts an unsigned integer value from this character object.
This character object is changed by the operation.
A reference to this character object.
TUint aChar | The value to be subtracted. |
Flags defining operations to be performed using TChar::Fold().
The flag values are passed to the Fold() funtion.
EFoldCase = 1 |
Convert characters to their lower case form if any. |
EFoldAccents = 2 |
Strip accents |
EFoldDigits = 4 |
Convert digits representing values 0..9 to characters '0'..'9' |
EFoldSpaces = 8 |
Convert all spaces (ordinary, fixed-width, ideographic, etc.) to ' ' |
EFoldKana = 16 |
Convert hiragana to katakana. |
EFoldWidth = 32 |
Fold fullwidth and halfwidth variants to their standard forms |
EFoldStandard = EFoldCase | EFoldAccents | EFoldDigits | EFoldSpaces |
Perform standard folding operations, i.e.those done by Fold() with no argument |
EFoldAll = -1 |
Perform all possible folding operations |
The bi-directional Unicode character category.
For more information on the bi-directional algorithm, see Unicode Technical Report No. 9 available at: http://www.unicode.org/unicode/reports/tr9.
ELeftToRight |
Left to right. |
ELeftToRightEmbedding |
Left to right embedding. |
ELeftToRightOverride |
Left-to-Right Override. |
ERightToLeft |
Right to left. |
ERightToLeftArabic |
Right to left Arabic. |
ERightToLeftEmbedding |
Right to left embedding. |
ERightToLeftOverride |
Right-to-Left Override. |
EPopDirectionalFormat |
Pop Directional Format. |
EEuropeanNumber |
European number. |
EEuropeanNumberSeparator |
European number separator. |
EEuropeanNumberTerminator |
European number terminator. |
EArabicNumber |
Arabic number. |
ECommonNumberSeparator |
Common number separator. |
ENonSpacingMark |
Non Spacing Mark. |
EBoundaryNeutral |
Boundary Neutral. |
EParagraphSeparator |
Paragraph Separator. |
ESegmentSeparator |
Segment separator. |
EWhitespace |
Whitespace |
EOtherNeutral |
Other neutrals; all other characters: punctuation, symbols. |
General Unicode character category.
The high nibble encodes the major category (Mark, Number, etc.) and a low nibble encodes the subdivisions of that category.
The category codes can be used in three ways:
E<XX>Categorywhere
<XX>is the category name given by the Unicode database (e.g., the constant ELuCategory is used for lowercase letters, category Lu);
(ii) as numbers in certain ranges: letter categories are all <= EMaxLetterCategory;
(iii) as codes in which the upper nibble gives the category group (e.g., punctuation categories all yield TRUE for the test (category & 0xF0) ==EPunctuationGroup).
EAlphaGroup = 0x00 |
Alphabetic letters. Includes ELuCategory, ELlCategory and ELtCategory. |
ELetterOtherGroup = 0x10 |
Other letters. Includes ELoCategory. |
ELetterModifierGroup = 0x20 |
Letter modifiers. Includes ELmCategory. |
EMarkGroup = 0x30 |
Marks group. Includes EMnCategory, EMcCategory and EMeCategory. |
ENumberGroup = 0x40 |
Numbers group. Includes ENdCategory, ENlCategory and ENoCategory. |
EPunctuationGroup = 0x50 |
Punctuation group. IncludesEPcCategory, PdCategory, EpeCategory, EPsCategory and EPoCategory. |
ESymbolGroup = 0x60 |
Symbols group. Includes ESmCategory, EScCategory, ESkCategory and ESoCategory. |
ESeparatorGroup = 0x70 |
Separators group. Includes EZsCategory, EZlCategory and EZlpCategory. |
EControlGroup = 0x80 |
Control, format, private use, unassigned. Includes ECcCategory, ECtCategory, ECsCategory, ECoCategory and ECnCategory. |
EMaxAssignedGroup = 0xE0 |
The highest possible groups category. |
EUnassignedGroup = 0xF0 |
Unassigned to any other group. |
ELuCategory = EAlphaGroup | 0 |
Letter, Uppercase. |
ELlCategory = EAlphaGroup | 1 |
Letter, Lowercase. |
ELtCategory = EAlphaGroup | 2 |
Letter, Titlecase. |
ELoCategory = ELetterOtherGroup | 0 |
Letter, Other. |
EMaxLetterCategory = ELetterOtherGroup | 0x0F |
The highest possible (non-modifier) letter category. |
ELmCategory = ELetterModifierGroup | 0 |
Letter, Modifier. |
EMaxLetterOrLetterModifierCategory = ELetterModifierGroup | 0x0F |
The highest possible letter category. |
EMnCategory = EMarkGroup | 0 |
Mark, Non-Spacing |
EMcCategory = EMarkGroup | 1 |
Mark, Combining. |
EMeCategory = EMarkGroup | 2 |
Mark, Enclosing. |
ENdCategory = ENumberGroup | 0 |
Number, Decimal Digit. |
ENlCategory = ENumberGroup | 1 |
Number, Letter. |
ENoCategory = ENumberGroup | 2 |
Number, Other. |
EPcCategory = EPunctuationGroup | 0 |
Punctuation, Connector. |
EPdCategory = EPunctuationGroup | 1 |
Punctuation, Dash. |
EPsCategory = EPunctuationGroup | 2 |
Punctuation, Open. |
EPeCategory = EPunctuationGroup | 3 |
Punctuation, Close. |
EPiCategory = EPunctuationGroup | 4 |
Punctuation, Initial Quote |
EPfCategory = EPunctuationGroup | 5 |
Punctuation, Final Quote |
EPoCategory = EPunctuationGroup | 6 |
Punctuation, Other. |
ESmCategory = ESymbolGroup | 0 |
Symbol, Math. |
EScCategory = ESymbolGroup | 1 |
Symbol, Currency. |
ESkCategory = ESymbolGroup | 2 |
Symbol, Modifier. |
ESoCategory = ESymbolGroup | 3 |
Symbol, Other. |
EMaxGraphicCategory = ESymbolGroup | 0x0F |
The highest possible graphic character category. |
EZsCategory = ESeparatorGroup | 0 |
Separator, Space. |
EMaxPrintableCategory = EZsCategory |
The highest possible printable character category. |
EZlCategory = ESeparatorGroup | 1 |
Separator, Line. |
EZpCategory = ESeparatorGroup | 2 |
Separator, Paragraph. |
ECcCategory = EControlGroup | 0 |
Other, Control. |
ECfCategory = EControlGroup | 1 |
Other, Format. |
EMaxAssignedCategory = EMaxAssignedGroup | 0x0F |
The highest possible category for assigned 16-bit characters; does not include surrogates, which are interpreted as pairs and have no meaning on their own. |
ECsCategory = EUnassignedGroup | 0 |
Other, Surrogate. |
ECoCategory = EUnassignedGroup | 1 |
Other, Private Use. |
ECnCategory = EUnassignedGroup | 2 |
Other, Not Assigned. |
Notional character width as known to East Asian (Chinese, Japanese, Korean (CJK)) coding systems.
ENeutralWidth |
Includes 'ambiguous width' defined in Unicode Technical Report 11: East Asian Width |
EHalfWidth |
Character which occupies a single cell. |
EFullWidth |
Character which occupies 2 cells. |
ENarrow |
Characters that are always narrow and have explicit full-width counterparts. All of ASCII is an example of East Asian Narrow characters. |
EWide |
Characters that are always wide. This category includes characters that have explicit half-width counterparts. |
Encoding systems used by the translation functions.
EUnicode |
The Unicode encoding. |
EShiftJIS |
The shift-JIS encoding (used in Japan). |