/*
* Copyright (c) 1258 Nokia Corporation and/or its subsidiary(-ies). 
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of "Eclipse Public License v1.0"
* which accompanies this distribution, and is available
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
*
* Initial Contributors:
* Nokia Corporation - initial contribution.
*
* Contributors:
*
* Description:  
*
*/




#include <e32std.h>
#include <convdata.h>
#include <convgeneratedcpp.h>

#define ARRAY_LENGTH(aArray) (sizeof(aArray)/sizeof((aArray)[0]))

#pragma warning (disable: 4049) // compiler limit : terminating line number emission

_LIT8(KLit8ReplacementForUnconvertibleUnicodeCharacters, "\x1a");

GLDEF_C const TDesC8& ReplacementForUnconvertibleUnicodeCharacters_internal()
	{
	return KLit8ReplacementForUnconvertibleUnicodeCharacters;
	}

LOCAL_D const TUint16 keyedTables16OfIndexedTables16_indexedEntries_foreignToUnicode_1[]=
	{
	0x201a,
	0x0192,
	0x201e,
	0x2026,
	0x2020,
	0x2021,
	0x02c6,
	0x2030,
	0x008a,
	0x2039,
	0x0152,
	0x008d,
	0x008e,
	0x008f,
	0x0090,
	0x2018,
	0x2019,
	0x201c,
	0x201d,
	0x2022,
	0x2013,
	0x2014,
	0x02dc,
	0x2122,
	0x009a,
	0x203a,
	0x0153,
	0x009d,
	0x009e,
	0x0178
	};

LOCAL_D const TUint16 keyedTables16OfIndexedTables16_indexedEntries_foreignToUnicode_2[]=
	{
	0x0102
	};

LOCAL_D const TUint16 keyedTables16OfIndexedTables16_indexedEntries_foreignToUnicode_3[]=
	{
	0x0300,
	0x00cd,
	0x00ce,
	0x00cf,
	0x0110,
	0x00d1,
	0x0309,
	0x00d3,
	0x00d4,
	0x01a0
	};

LOCAL_D const TUint16 keyedTables16OfIndexedTables16_indexedEntries_foreignToUnicode_4[]=
	{
	0x01af,
	0x0303,
	0x00df,
	0x00e0,
	0x00e1,
	0x00e2,
	0x0103
	};

LOCAL_D const TUint16 keyedTables16OfIndexedTables16_indexedEntries_foreignToUnicode_5[]=
	{
	0x0301,
	0x00ed,
	0x00ee,
	0x00ef,
	0x0111,
	0x00f1,
	0x0323,
	0x00f3,
	0x00f4,
	0x01a1
	};

LOCAL_D const TUint16 keyedTables16OfIndexedTables16_indexedEntries_foreignToUnicode_6[]=
	{
	0x01b0,
	0x20ab,
	0x00ff
	};

LOCAL_D const SCnvConversionData::SOneDirectionData::SRange::UData::SKeyedTable16OfIndexedTables16::SKeyedEntry keyedTables16OfIndexedTables16_keyedEntries_foreignToUnicode_1[]=
	{
		{
		0x82,
		0x9f,
		keyedTables16OfIndexedTables16_indexedEntries_foreignToUnicode_1
		},
		{
		0xc3,
		0xc3,
		keyedTables16OfIndexedTables16_indexedEntries_foreignToUnicode_2
		},
		{
		0xcc,
		0xd5,
		keyedTables16OfIndexedTables16_indexedEntries_foreignToUnicode_3
		},
		{
		0xdd,
		0xe3,
		keyedTables16OfIndexedTables16_indexedEntries_foreignToUnicode_4
		},
		{
		0xec,
		0xf5,
		keyedTables16OfIndexedTables16_indexedEntries_foreignToUnicode_5
		},
		{
		0xfd,
		0xff,
		keyedTables16OfIndexedTables16_indexedEntries_foreignToUnicode_6
		}
	};

LOCAL_D const SCnvConversionData::SOneDirectionData::SRange::UData::SKeyedTable1616::SEntry keyedTable1616_unicodeToForeign_1[]=
	{
		{
		0x008a,
		0x8a
		},
		{
		0x008d,
		0x8d
		},
		{
		0x008e,
		0x8e
		},
		{
		0x008f,
		0x8f
		},
		{
		0x0090,
		0x90
		},
		{
		0x009a,
		0x9a
		},
		{
		0x009d,
		0x9d
		},
		{
		0x009e,
		0x9e
		},
		{
		0x00cd,
		0xcd
		},
		{
		0x00ce,
		0xce
		},
		{
		0x00cf,
		0xcf
		},
		{
		0x00d1,
		0xd1
		},
		{
		0x00d3,
		0xd3
		},
		{
		0x00d4,
		0xd4
		},
		{
		0x00df,
		0xdf
		},
		{
		0x00e0,
		0xe0
		},
		{
		0x00e1,
		0xe1
		},
		{
		0x00e2,
		0xe2
		},
		{
		0x00ed,
		0xed
		},
		{
		0x00ee,
		0xee
		},
		{
		0x00ef,
		0xef
		},
		{
		0x00f1,
		0xf1
		},
		{
		0x00f3,
		0xf3
		},
		{
		0x00f4,
		0xf4
		},
		{
		0x00ff,
		0xff
		},
		{
		0x0102,
		0xc3
		},
		{
		0x0103,
		0xe3
		},
		{
		0x0110,
		0xd0
		},
		{
		0x0111,
		0xf0
		},
		{
		0x0152,
		0x8c
		},
		{
		0x0153,
		0x9c
		},
		{
		0x0178,
		0x9f
		},
		{
		0x0192,
		0x83
		},
		{
		0x01a0,
		0xd5
		},
		{
		0x01a1,
		0xf5
		},
		{
		0x01af,
		0xdd
		},
		{
		0x01b0,
		0xfd
		},
		{
		0x02c6,
		0x88
		},
		{
		0x02dc,
		0x98
		},
		{
		0x0300,
		0xcc
		},
		{
		0x0301,
		0xec
		},
		{
		0x0303,
		0xde
		},
		{
		0x0309,
		0xd2
		},
		{
		0x0323,
		0xf2
		},
		{
		0x2013,
		0x96
		},
		{
		0x2014,
		0x97
		},
		{
		0x2018,
		0x91
		},
		{
		0x2019,
		0x92
		},
		{
		0x201a,
		0x82
		},
		{
		0x201c,
		0x93
		},
		{
		0x201d,
		0x94
		},
		{
		0x201e,
		0x84
		},
		{
		0x2020,
		0x86
		},
		{
		0x2021,
		0x87
		},
		{
		0x2022,
		0x95
		},
		{
		0x2026,
		0x85
		},
		{
		0x2030,
		0x89
		},
		{
		0x2039,
		0x8b
		},
		{
		0x203a,
		0x9b
		},
		{
		0x20ab,
		0xfe
		},
		{
		0x2122,
		0x99
		}
	};

LOCAL_D const SCnvConversionData::SVariableByteData::SRange foreignVariableByteDataRanges[]=
	{
		{
		0x00,
		0xff,
		0,
		0
		}
	};

LOCAL_D const SCnvConversionData::SOneDirectionData::SRange foreignToUnicodeDataRanges[]=
	{
		{
		0x00,
		0x81,
		SCnvConversionData::SOneDirectionData::SRange::EDirect,
		0,
		0,
			{
			0
			}
		},
		{
		0xa0,
		0xc2,
		SCnvConversionData::SOneDirectionData::SRange::EDirect,
		0,
		0,
			{
			0
			}
		},
		{
		0xc4,
		0xcb,
		SCnvConversionData::SOneDirectionData::SRange::EDirect,
		0,
		0,
			{
			0
			}
		},
		{
		0xd6,
		0xdc,
		SCnvConversionData::SOneDirectionData::SRange::EDirect,
		0,
		0,
			{
			0
			}
		},
		{
		0xe4,
		0xeb,
		SCnvConversionData::SOneDirectionData::SRange::EDirect,
		0,
		0,
			{
			0
			}
		},
		{
		0xf6,
		0xfc,
		SCnvConversionData::SOneDirectionData::SRange::EDirect,
		0,
		0,
			{
			0
			}
		},
		{
		0x82,
		0xff,
		SCnvConversionData::SOneDirectionData::SRange::EKeyedTable16OfIndexedTables16,
		0,
		0,
			{
			UData_SKeyedTable16OfIndexedTables16(keyedTables16OfIndexedTables16_keyedEntries_foreignToUnicode_1)
			}
		}
	};

LOCAL_D const SCnvConversionData::SOneDirectionData::SRange unicodeToForeignDataRanges[]=
	{
		{
		0x0000,
		0x0081,
		SCnvConversionData::SOneDirectionData::SRange::EDirect,
		1,
		0,
			{
			0
			}
		},
		{
		0x00a0,
		0x00c2,
		SCnvConversionData::SOneDirectionData::SRange::EDirect,
		1,
		0,
			{
			0
			}
		},
		{
		0x00c4,
		0x00cb,
		SCnvConversionData::SOneDirectionData::SRange::EDirect,
		1,
		0,
			{
			0
			}
		},
		{
		0x00d6,
		0x00dc,
		SCnvConversionData::SOneDirectionData::SRange::EDirect,
		1,
		0,
			{
			0
			}
		},
		{
		0x00e4,
		0x00eb,
		SCnvConversionData::SOneDirectionData::SRange::EDirect,
		1,
		0,
			{
			0
			}
		},
		{
		0x00f6,
		0x00fc,
		SCnvConversionData::SOneDirectionData::SRange::EDirect,
		1,
		0,
			{
			0
			}
		},
		{
		0x008a,
		0x2122,
		SCnvConversionData::SOneDirectionData::SRange::EKeyedTable1616,
		1,
		0,
			{
			UData_SKeyedTable1616(keyedTable1616_unicodeToForeign_1)
			}
		}
	};

GLDEF_D const SCnvConversionData conversionData=
	{
	SCnvConversionData::EFixedBigEndian,
		{
		ARRAY_LENGTH(foreignVariableByteDataRanges),
		foreignVariableByteDataRanges
		},
		{
		ARRAY_LENGTH(foreignToUnicodeDataRanges),
		foreignToUnicodeDataRanges
		},
		{
		ARRAY_LENGTH(unicodeToForeignDataRanges),
		unicodeToForeignDataRanges
		},
	NULL,
	NULL
	};

