diff -r c55016431358 -r 0a7b44b10206 symport/charconv/framework/inc/utf.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/symport/charconv/framework/inc/utf.h Thu Jun 25 15:59:54 2009 +0100 @@ -0,0 +1,86 @@ +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of the License "Symbian Foundation License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// + +#if !defined(__UTF_H__) +#define __UTF_H__ + +#if !defined(__E32STD_H__) +#include +#endif + + +class CnvUtfConverter +/** +Converts text between Unicode (UCS-2) and the two Unicode transformation +formats UTF-7 and UTF-8. There are no functions to convert directly between +UTF-7 and UTF-8. + +Objects of this class do not need to be created because all the member functions +are static. The four functions are passed text in the second argument and +output the resulting text in the first argument. Sixteen-bit descriptors are +used to hold text encoded in UCS-2 (i.e. normal 16 bit Unicode), and eight-bit +descriptors are used to hold text encoded in either of the transformation +formats. + +The conversion functions return the number of characters which were not converted +because the output descriptor was not long enough to hold all of the converted +text. This allows users of this class to perform partial conversions on an +input descriptor, handling the case when the input descriptor is truncated +mid way through a multi-byte character. The caller does not have to guess +how big to make the output descriptor for a given input descriptor- they +can simply do the conversion in a loop using a small output descriptor. The +ability to handle truncated descriptors is particularly useful if the caller +is receiving information in chunks from an external source. +@publishedAll +@released +*/ + { +public: + /** Conversion error flags. At this stage there is only one error flag + - others may be added in the future. */ + enum TError + { + /** The input descriptor contains a single corrupt character. This + might occur when the input descriptor only contains some of the bytes + of a single multi-byte character. */ + EErrorIllFormedInput=KErrCorrupt + }; + + /** Initial value for the state argument in a set of related calls to + ConvertToUnicode(). */ + enum {KStateDefault=0}; +public: + // 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 + IMPORT_C static TInt ConvertFromUnicodeToUtf7(TDes8& aUtf7, const TDesC16& aUnicode, TBool aEncodeOptionalDirectCharactersInBase64); + static TInt ConvertFromUnicodeToUtf7(TDes8& aUtf7, const TDesC16& aUnicode, TBool aIsImapUtf7, TBool aEncodeOptionalDirectCharactersInBase64); + IMPORT_C static TInt ConvertFromUnicodeToUtf8(TDes8& aUtf8, const TDesC16& aUnicode); + static TInt ConvertFromUnicodeToUtf8(TDes8& aUtf8, const TDesC16& aUnicode, TBool aGenerateJavaConformantUtf8); + IMPORT_C static TInt ConvertToUnicodeFromUtf7(TDes16& aUnicode, const TDesC8& aUtf7, TInt& aState); + static TInt ConvertToUnicodeFromUtf7(TDes16& aUnicode, const TDesC8& aUtf7, TBool aIsImapUtf7, TInt& aState); + IMPORT_C static TInt ConvertToUnicodeFromUtf8(TDes16& aUnicode, const TDesC8& aUtf8); + static TInt ConvertToUnicodeFromUtf8(TDes16& aUnicode, const TDesC8& aUtf8, TBool aGenerateJavaConformantUtf8); + static TInt ConvertToUnicodeFromUtf8(TDes16& aUnicode, const TDesC8& aUtf8, TBool aGenerateJavaConformantUtf8, + TInt& aNumberOfUnconvertibleCharacters, TInt& aIndexOfFirstByteOfFirstUnconvertibleCharacter); + + IMPORT_C static HBufC8* ConvertFromUnicodeToUtf7L(const TDesC16& aUnicode,TBool aEncodeOptionalDirectCharactersInBase64); + IMPORT_C static HBufC8* ConvertFromUnicodeToUtf8L(const TDesC16& aUnicode); + IMPORT_C static HBufC16* ConvertToUnicodeFromUtf7L(const TDesC8& aUtf7); + IMPORT_C static HBufC16* ConvertToUnicodeFromUtf8L(const TDesC8& aUtf8); + + + }; + +#endif +