symport/charconv/framework/inc/utf.h
changeset 1 0a7b44b10206
child 2 806186ab5e14
equal deleted inserted replaced
0:c55016431358 1:0a7b44b10206
       
     1 // Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
       
     2 // All rights reserved.
       
     3 // This component and the accompanying materials are made available
       
     4 // under the terms of the License "Symbian Foundation License v1.0"
       
     5 // which accompanies this distribution, and is available
       
     6 // at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
       
     7 //
       
     8 // Initial Contributors:
       
     9 // Nokia Corporation - initial contribution.
       
    10 //
       
    11 // Contributors:
       
    12 //
       
    13 // Description:
       
    14 //
       
    15 
       
    16 #if !defined(__UTF_H__)
       
    17 #define __UTF_H__
       
    18 
       
    19 #if !defined(__E32STD_H__)
       
    20 #include <e32std.h>
       
    21 #endif
       
    22 
       
    23 
       
    24 class CnvUtfConverter
       
    25 /** 
       
    26 Converts text between Unicode (UCS-2) and the two Unicode transformation 
       
    27 formats UTF-7 and UTF-8. There are no functions to convert directly between 
       
    28 UTF-7 and UTF-8.
       
    29 
       
    30 Objects of this class do not need to be created because all the member functions 
       
    31 are static. The four functions are passed text in the second argument and 
       
    32 output the resulting text in the first argument. Sixteen-bit descriptors are 
       
    33 used to hold text encoded in UCS-2 (i.e. normal 16 bit Unicode), and eight-bit 
       
    34 descriptors are used to hold text encoded in either of the transformation 
       
    35 formats.
       
    36 
       
    37 The conversion functions return the number of characters which were not converted 
       
    38 because the output descriptor was not long enough to hold all of the converted 
       
    39 text. This allows users of this class to perform partial conversions on an 
       
    40 input descriptor, handling the case when the input descriptor is truncated 
       
    41 mid way through a multi-byte character. The caller does not have to guess 
       
    42 how big to make the output descriptor for a given input descriptor- they 
       
    43 can simply do the conversion in a loop using a small output descriptor. The 
       
    44 ability to handle truncated descriptors is particularly useful if the caller 
       
    45 is receiving information in chunks from an external source. 
       
    46 @publishedAll
       
    47 @released
       
    48 */
       
    49 	{
       
    50 public:
       
    51 	/** Conversion error flags. At this stage there is only one error flag 
       
    52 	- others may be added in the future. */
       
    53 	enum TError
       
    54 		{
       
    55  		/** The input descriptor contains a single corrupt character. This 
       
    56  		might occur when the input descriptor only contains some of the bytes 
       
    57  		of a single multi-byte character. */
       
    58 		EErrorIllFormedInput=KErrCorrupt
       
    59 		};
       
    60 	 
       
    61 	 /** Initial value for the state argument in a set of related calls to
       
    62 	ConvertToUnicode(). */
       
    63 	enum {KStateDefault=0}; 
       
    64 public:
       
    65 	// the conversion functions return either one of the TError values above, or the number of unconverted elements left at the end of the input descriptor
       
    66 	IMPORT_C static TInt ConvertFromUnicodeToUtf7(TDes8& aUtf7, const TDesC16& aUnicode, TBool aEncodeOptionalDirectCharactersInBase64);
       
    67 	static TInt ConvertFromUnicodeToUtf7(TDes8& aUtf7, const TDesC16& aUnicode, TBool aIsImapUtf7, TBool aEncodeOptionalDirectCharactersInBase64);
       
    68 	IMPORT_C static TInt ConvertFromUnicodeToUtf8(TDes8& aUtf8, const TDesC16& aUnicode);
       
    69 	static TInt ConvertFromUnicodeToUtf8(TDes8& aUtf8, const TDesC16& aUnicode, TBool aGenerateJavaConformantUtf8);
       
    70 	IMPORT_C static TInt ConvertToUnicodeFromUtf7(TDes16& aUnicode, const TDesC8& aUtf7, TInt& aState);
       
    71 	static TInt ConvertToUnicodeFromUtf7(TDes16& aUnicode, const TDesC8& aUtf7, TBool aIsImapUtf7, TInt& aState);
       
    72 	IMPORT_C static TInt ConvertToUnicodeFromUtf8(TDes16& aUnicode, const TDesC8& aUtf8);
       
    73 	static TInt ConvertToUnicodeFromUtf8(TDes16& aUnicode, const TDesC8& aUtf8, TBool aGenerateJavaConformantUtf8);
       
    74 	static TInt ConvertToUnicodeFromUtf8(TDes16& aUnicode, const TDesC8& aUtf8, TBool aGenerateJavaConformantUtf8,
       
    75 			TInt& aNumberOfUnconvertibleCharacters, TInt& aIndexOfFirstByteOfFirstUnconvertibleCharacter);
       
    76 
       
    77 	IMPORT_C static HBufC8* ConvertFromUnicodeToUtf7L(const TDesC16& aUnicode,TBool aEncodeOptionalDirectCharactersInBase64);
       
    78 	IMPORT_C static HBufC8* ConvertFromUnicodeToUtf8L(const TDesC16& aUnicode);
       
    79 	IMPORT_C static HBufC16* ConvertToUnicodeFromUtf7L(const TDesC8& aUtf7); 
       
    80 	IMPORT_C static HBufC16* ConvertToUnicodeFromUtf8L(const TDesC8& aUtf8);
       
    81 
       
    82 
       
    83 	};
       
    84 
       
    85 #endif
       
    86