epoc32/include/convdata.h
branchSymbian2
changeset 2 2fe1408b6811
child 4 837f303aceeb
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/epoc32/include/convdata.h	Tue Mar 16 16:12:26 2010 +0000
@@ -0,0 +1,136 @@
+// 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" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#if !defined(__CONVDATA_H__)
+#define __CONVDATA_H__
+
+/**
+@internalComponent
+*/
+struct SCnvConversionData
+	{
+/** Specifies the default endian-ness of the current character set. Used by SetDefaultEndiannessOfForeignCharacters(). */
+	enum TEndianness // the values of these *must not* change they are used hard-coded in CNVTOOL.PL
+		{
+		EUnspecified		=0,
+		EFixedLittleEndian	=1,
+		EFixedBigEndian		=2
+		};
+	struct SVariableByteData
+		{
+		struct SRange
+			{
+			TUint8 iFirstInitialByteValueInRange;
+			TUint8 iLastInitialByteValueInRange;
+			TUint8 iNumberOfSubsequentBytes;
+			TUint8 iSpare;
+			};
+		TInt iNumberOfRanges;
+		const SRange* iRangeArray;
+		};
+	struct SOneDirectionData
+		{
+		struct SRange
+			{
+			enum TAlgorithm
+				{
+				// each of these, with the exception of EDirect, has a corresponding member of UData
+				EDirect,
+				EOffset,
+				EIndexedTable16,
+				EKeyedTable1616,
+				EKeyedTable16OfIndexedTables16
+				};
+			union UData
+				{
+				struct SIndexedTable16
+					{
+					struct SEntry
+						{
+						TUint16 iOutputCharacterCode;
+						};
+					const SEntry* iEntryArray;
+					};
+				struct SKeyedTable1616
+					{
+					struct SEntry
+						{
+						TUint16 iKey;
+						TUint16 iOutputCharacterCode;
+						};
+					TInt iNumberOfEntries;
+					const SEntry* iEntryArray;
+					};
+				struct SKeyedTable16OfIndexedTables16
+					{
+					struct SKeyedEntry
+						{
+						TUint16 iFirstInputCharacterCodeInIndexedTable;
+						TUint16 iLastInputCharacterCodeInIndexedTable;
+						const TUint16* iIndexedEntryArray;
+						};
+					TInt iNumberOfKeyedEntries;
+					const SKeyedEntry* iKeyedEntryArray;
+					};
+				TInt iOffset;
+				SIndexedTable16 iIndexedTable16;
+				SKeyedTable1616 iKeyedTable1616;
+				SKeyedTable16OfIndexedTables16 iKeyedTable16OfIndexedTables16;
+				};
+			TUint iFirstInputCharacterCodeInRange;
+			TUint iLastInputCharacterCodeInRange;
+			TUint8 iAlgorithm; // one of the TAlgorithm values
+			TUint8 iSizeOfOutputCharacterCodeInBytesIfForeign; // only used in SCnvConversionData::iUnicodeToForeignData
+			TUint16 iSpare;
+#if defined(CONST_STATIC_UNIONS_ARE_POSSIBLE)
+			UData iData;
+#else
+			struct
+				{
+				TUint iWord1;
+				TUint iWord2;
+				} iData;
+#endif
+			};
+		TInt iNumberOfRanges;
+		const SRange* iRangeArray;
+		};
+	TEndianness iEndiannessOfForeignCharacters;
+	SVariableByteData iForeignVariableByteData;
+	SOneDirectionData iForeignToUnicodeData;
+	SOneDirectionData iUnicodeToForeignData;
+	TAny* iSpareForFutureUse_1;
+	TAny* iSpareForFutureUse_2;
+	};
+
+/**
+@internalComponent
+*/
+#define UData_SIndexedTable16(a) \
+	reinterpret_cast<TUint>(const_cast<SCnvConversionData::SOneDirectionData::SRange::UData::SIndexedTable16::SEntry*>(a)) 
+/**
+@internalComponent
+*/
+#define UData_SKeyedTable1616(a) \
+	static_cast<TUint>ARRAY_LENGTH(a), \
+	reinterpret_cast<TUint>(const_cast<SCnvConversionData::SOneDirectionData::SRange::UData::SKeyedTable1616::SEntry*>(a))
+/**
+@internalComponent
+*/
+#define UData_SKeyedTable16OfIndexedTables16(a)	\
+	static_cast<TUint>ARRAY_LENGTH(a), \
+	reinterpret_cast<TUint>(const_cast<SCnvConversionData::SOneDirectionData::SRange::UData::SKeyedTable16OfIndexedTables16::SKeyedEntry *>(a)) 
+
+#endif