/*
* Copyright (c) 2009 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, "\x3f");

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

LOCAL_D const TUint16 keyedTables16OfIndexedTables16_indexedEntries_foreignToUnicode_1[]=
	{
	0x0040,
	0x00a3,
	0x0024,
	0x00a5,
	0x20ac,
	0x00e9,
	0x00f9,
	0x0131,
	0x00f2,
	0x00c7,
	0x000a,
	0x011e,
	0x011f,
	0x000d,
	0x00c5,
	0x00e5,
	0x0394,
	0x005f,
	0x03a6,
	0x0393,
	0x039b,
	0x03a9,
	0x03a0,
	0x03a8,
	0x03a3,
	0x0398,
	0x039e
	};

LOCAL_D const TUint16 keyedTables16OfIndexedTables16_indexedEntries_foreignToUnicode_2[]=
	{
	0x015e,
	0x015f,
	0x00df,
	0x00c9,
	0x0020,
	0x0021,
	0x0022,
	0x0023,
	0x00a4
	};

LOCAL_D const TUint16 keyedTables16OfIndexedTables16_indexedEntries_foreignToUnicode_3[]=
	{
	0x00c4,
	0x00d6,
	0x00d1,
	0x00dc,
	0x00a7,
	0x00e7
	};

LOCAL_D const TUint16 keyedTables16OfIndexedTables16_indexedEntries_foreignToUnicode_4[]=
	{
	0x00e4,
	0x00f6,
	0x00f1,
	0x00fc,
	0x00e0
	};

LOCAL_D const TUint16 keyedTables16OfIndexedTables16_indexedEntries_foreignToUnicode_5[]=
	{
	0x0040,
	0x00a3,
	0x0024,
	0x00a5,
	0x20ac,
	0x00e9,
	0x00f9,
	0x0131,
	0x00f2,
	0x00c7,
	0x000c,
	0x011e,
	0x011f,
	0x000d,
	0x00c5,
	0x00e5,
	0x0394,
	0x005f,
	0x03a6,
	0x0393,
	0x005e,
	0x03a9,
	0x03a0,
	0x03a8,
	0x03a3,
	0x0398,
	0x039e
	};

LOCAL_D const TUint16 keyedTables16OfIndexedTables16_indexedEntries_foreignToUnicode_6[]=
	{
	0x015e,
	0x015f,
	0x00df,
	0x00c9,
	0x0020,
	0x0021,
	0x0022,
	0x0023,
	0x00a4,
	0x0025,
	0x0026,
	0x0027,
	0x007b,
	0x007d,
	0x002a,
	0x002b,
	0x002c,
	0x002d,
	0x002e,
	0x005c
	};

LOCAL_D const TUint16 keyedTables16OfIndexedTables16_indexedEntries_foreignToUnicode_7[]=
	{
	0x005b,
	0x007e,
	0x005d,
	0x003f,
	0x007c
	};

LOCAL_D const TUint16 keyedTables16OfIndexedTables16_indexedEntries_foreignToUnicode_8[]=
	{
	0x00c4,
	0x00d6,
	0x00d1,
	0x00dc,
	0x00a7,
	0x00e7,
	0x0061,
	0x0062,
	0x0063,
	0x0064,
	0x20ac
	};

LOCAL_D const TUint16 keyedTables16OfIndexedTables16_indexedEntries_foreignToUnicode_9[]=
	{
	0x00e4,
	0x00f6,
	0x00f1,
	0x00fc,
	0x00e0
	};

LOCAL_D const SCnvConversionData::SOneDirectionData::SRange::UData::SKeyedTable16OfIndexedTables16::SKeyedEntry keyedTables16OfIndexedTables16_keyedEntries_foreignToUnicode_1[]=
	{
		{
		0x00,
		0x1a,
		keyedTables16OfIndexedTables16_indexedEntries_foreignToUnicode_1
		},
		{
		0x1c,
		0x24,
		keyedTables16OfIndexedTables16_indexedEntries_foreignToUnicode_2
		},
		{
		0x5b,
		0x60,
		keyedTables16OfIndexedTables16_indexedEntries_foreignToUnicode_3
		},
		{
		0x7b,
		0x7f,
		keyedTables16OfIndexedTables16_indexedEntries_foreignToUnicode_4
		}
	};

LOCAL_D const SCnvConversionData::SOneDirectionData::SRange::UData::SKeyedTable16OfIndexedTables16::SKeyedEntry keyedTables16OfIndexedTables16_keyedEntries_foreignToUnicode_2[]=
	{
		{
		0x1b00,
		0x1b1a,
		keyedTables16OfIndexedTables16_indexedEntries_foreignToUnicode_5
		},
		{
		0x1b1c,
		0x1b2f,
		keyedTables16OfIndexedTables16_indexedEntries_foreignToUnicode_6
		},
		{
		0x1b3c,
		0x1b40,
		keyedTables16OfIndexedTables16_indexedEntries_foreignToUnicode_7
		},
		{
		0x1b5b,
		0x1b65,
		keyedTables16OfIndexedTables16_indexedEntries_foreignToUnicode_8
		},
		{
		0x1b7b,
		0x1b7f,
		keyedTables16OfIndexedTables16_indexedEntries_foreignToUnicode_9
		}
	};

LOCAL_D const SCnvConversionData::SOneDirectionData::SRange::UData::SKeyedTable1616::SEntry keyedTable1616_unicodeToForeign_1[]=
	{
		{
		0x000a,
		0x0a
		},
		{
		0x000d,
		0x0d
		},
		{
		0x0020,
		0x20
		},
		{
		0x0021,
		0x21
		},
		{
		0x0022,
		0x22
		},
		{
		0x0023,
		0x23
		},
		{
		0x0024,
		0x02
		},
		{
		0x0040,
		0x00
		},
		{
		0x005f,
		0x11
		},
		{
		0x00a3,
		0x01
		},
		{
		0x00a4,
		0x24
		},
		{
		0x00a5,
		0x03
		},
		{
		0x00a7,
		0x5f
		},
		{
		0x00c0,
		0x41
		},
		{
		0x00c1,
		0x41
		},
		{
		0x00c2,
		0x41
		},
		{
		0x00c3,
		0x41
		},
		{
		0x00c4,
		0x5b
		},
		{
		0x00c5,
		0x0e
		},
		{
		0x00c7,
		0x09
		},
		{
		0x00c8,
		0x45
		},
		{
		0x00c9,
		0x1f
		},
		{
		0x00ca,
		0x45
		},
		{
		0x00cb,
		0x45
		},
		{
		0x00cc,
		0x49
		},
		{
		0x00cd,
		0x49
		},
		{
		0x00ce,
		0x49
		},
		{
		0x00cf,
		0x49
		},
		{
		0x00d1,
		0x5d
		},
		{
		0x00d2,
		0x4f
		},
		{
		0x00d3,
		0x4f
		},
		{
		0x00d4,
		0x4f
		},
		{
		0x00d5,
		0x4f
		},
		{
		0x00d6,
		0x5c
		},
		{
		0x00d9,
		0x55
		},
		{
		0x00da,
		0x55
		},
		{
		0x00db,
		0x55
		},
		{
		0x00dc,
		0x5e
		},
		{
		0x00dd,
		0x59
		},
		{
		0x00df,
		0x1e
		},
		{
		0x00e0,
		0x7f
		},
		{
		0x00e1,
		0x61
		},
		{
		0x00e2,
		0x61
		},
		{
		0x00e3,
		0x61
		},
		{
		0x00e4,
		0x7b
		},
		{
		0x00e5,
		0x0f
		},
		{
		0x00e7,
		0x60
		},
		{
		0x00e9,
		0x05
		},
		{
		0x00ea,
		0x65
		},
		{
		0x00eb,
		0x65
		},
		{
		0x00ed,
		0x69
		},
		{
		0x00ee,
		0x69
		},
		{
		0x00ef,
		0x69
		},
		{
		0x00f1,
		0x7d
		},
		{
		0x00f2,
		0x08
		},
		{
		0x00f3,
		0x6f
		},
		{
		0x00f4,
		0x6f
		},
		{
		0x00f5,
		0x6f
		},
		{
		0x00f6,
		0x7c
		},
		{
		0x00f9,
		0x06
		},
		{
		0x00fa,
		0x75
		},
		{
		0x00fb,
		0x75
		},
		{
		0x00fc,
		0x7e
		},
		{
		0x00fd,
		0x79
		},
		{
		0x00ff,
		0x79
		},
		{
		0x011e,
		0x0b
		},
		{
		0x011f,
		0x0c
		},
		{
		0x0130,
		0x40
		},
		{
		0x0131,
		0x07
		},
		{
		0x015e,
		0x1c
		},
		{
		0x015f,
		0x1d
		},
		{
		0x01e6,
		0x0b
		},
		{
		0x01e7,
		0x0c
		},
		{
		0x0386,
		0x41
		},
		{
		0x0388,
		0x45
		},
		{
		0x0389,
		0x48
		},
		{
		0x038a,
		0x49
		},
		{
		0x038c,
		0x4f
		},
		{
		0x038e,
		0x59
		},
		{
		0x038f,
		0x15
		},
		{
		0x0390,
		0x49
		},
		{
		0x0391,
		0x41
		},
		{
		0x0392,
		0x42
		},
		{
		0x0393,
		0x13
		},
		{
		0x0394,
		0x10
		},
		{
		0x0395,
		0x45
		},
		{
		0x0396,
		0x5a
		},
		{
		0x0397,
		0x48
		},
		{
		0x0398,
		0x19
		},
		{
		0x0399,
		0x49
		},
		{
		0x039a,
		0x4b
		},
		{
		0x039b,
		0x14
		},
		{
		0x039c,
		0x4d
		},
		{
		0x039d,
		0x4e
		},
		{
		0x039e,
		0x1a
		},
		{
		0x039f,
		0x4f
		},
		{
		0x03a0,
		0x16
		},
		{
		0x03a1,
		0x50
		},
		{
		0x03a3,
		0x18
		},
		{
		0x03a4,
		0x54
		},
		{
		0x03a5,
		0x59
		},
		{
		0x03a6,
		0x12
		},
		{
		0x03a7,
		0x58
		},
		{
		0x03a8,
		0x17
		},
		{
		0x03a9,
		0x15
		},
		{
		0x03aa,
		0x49
		},
		{
		0x03ab,
		0x59
		},
		{
		0x03ac,
		0x41
		},
		{
		0x03ad,
		0x45
		},
		{
		0x03ae,
		0x48
		},
		{
		0x03af,
		0x49
		},
		{
		0x03b0,
		0x59
		},
		{
		0x03b1,
		0x41
		},
		{
		0x03b2,
		0x42
		},
		{
		0x03b3,
		0x13
		},
		{
		0x03b4,
		0x10
		},
		{
		0x03b5,
		0x45
		},
		{
		0x03b6,
		0x5a
		},
		{
		0x03b7,
		0x48
		},
		{
		0x03b8,
		0x19
		},
		{
		0x03b9,
		0x49
		},
		{
		0x03ba,
		0x4b
		},
		{
		0x03bb,
		0x14
		},
		{
		0x03bc,
		0x4d
		},
		{
		0x03bd,
		0x4e
		},
		{
		0x03be,
		0x1a
		},
		{
		0x03bf,
		0x4f
		},
		{
		0x03c0,
		0x16
		},
		{
		0x03c1,
		0x50
		},
		{
		0x03c2,
		0x18
		},
		{
		0x03c3,
		0x18
		},
		{
		0x03c4,
		0x54
		},
		{
		0x03c5,
		0x59
		},
		{
		0x03c6,
		0x12
		},
		{
		0x03c7,
		0x58
		},
		{
		0x03c8,
		0x17
		},
		{
		0x03c9,
		0x15
		},
		{
		0x03ca,
		0x49
		},
		{
		0x03cb,
		0x59
		},
		{
		0x03cc,
		0x4f
		},
		{
		0x03cd,
		0x59
		},
		{
		0x03ce,
		0x15
		},
		{
		0x03d0,
		0x42
		},
		{
		0x03d1,
		0x19
		},
		{
		0x03d2,
		0x59
		},
		{
		0x03d3,
		0x59
		},
		{
		0x03d4,
		0x59
		},
		{
		0x03d5,
		0x12
		},
		{
		0x20ac,
		0x04
		},
		{
		0x2126,
		0x15
		},
		{
		0x220f,
		0x16
		},
		{
		0x2211,
		0x18
		}
	};

LOCAL_D const TUint16 keyedTables16OfIndexedTables16_indexedEntries_unicodeToForeign_1[]=
	{
	0x1b3c,
	0x1b2f,
	0x1b3e,
	0x1b14
	};

LOCAL_D const TUint16 keyedTables16OfIndexedTables16_indexedEntries_unicodeToForeign_2[]=
	{
	0x1b28,
	0x1b40,
	0x1b29,
	0x1b3d
	};

LOCAL_D const SCnvConversionData::SOneDirectionData::SRange::UData::SKeyedTable16OfIndexedTables16::SKeyedEntry keyedTables16OfIndexedTables16_keyedEntries_unicodeToForeign_1[]=
	{
		{
		0x005b,
		0x005e,
		keyedTables16OfIndexedTables16_indexedEntries_unicodeToForeign_1
		}
	};

LOCAL_D const SCnvConversionData::SOneDirectionData::SRange::UData::SKeyedTable16OfIndexedTables16::SKeyedEntry keyedTables16OfIndexedTables16_keyedEntries_unicodeToForeign_2[]=
	{
		{
		0x007b,
		0x007e,
		keyedTables16OfIndexedTables16_indexedEntries_unicodeToForeign_2
		}
	};

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

LOCAL_D const SCnvConversionData::SOneDirectionData::SRange foreignToUnicodeDataRanges[]=
	{
		{
		0x25,
		0x3f,
		SCnvConversionData::SOneDirectionData::SRange::EDirect,
		0,
		0,
			{
			0
			}
		},
		{
		0x41,
		0x5a,
		SCnvConversionData::SOneDirectionData::SRange::EDirect,
		0,
		0,
			{
			0
			}
		},
		{
		0x61,
		0x7a,
		SCnvConversionData::SOneDirectionData::SRange::EDirect,
		0,
		0,
			{
			0
			}
		},
		{
		0x40,
		0x40,
		SCnvConversionData::SOneDirectionData::SRange::EOffset,
		0,
		0,
			{
			STATIC_CAST(TUint, 240)
			}
		},
		{
		0x00,
		0x7f,
		SCnvConversionData::SOneDirectionData::SRange::EKeyedTable16OfIndexedTables16,
		0,
		0,
			{
			UData_SKeyedTable16OfIndexedTables16(keyedTables16OfIndexedTables16_keyedEntries_foreignToUnicode_1)
			}
		},
		{
		0x1b30,
		0x1b3b,
		SCnvConversionData::SOneDirectionData::SRange::EOffset,
		0,
		0,
			{
			STATIC_CAST(TUint, -6912)
			}
		},
		{
		0x1b41,
		0x1b5a,
		SCnvConversionData::SOneDirectionData::SRange::EOffset,
		0,
		0,
			{
			STATIC_CAST(TUint, -6912)
			}
		},
		{
		0x1b66,
		0x1b7a,
		SCnvConversionData::SOneDirectionData::SRange::EOffset,
		0,
		0,
			{
			STATIC_CAST(TUint, -6912)
			}
		},
		{
		0x1b00,
		0x1b7f,
		SCnvConversionData::SOneDirectionData::SRange::EKeyedTable16OfIndexedTables16,
		0,
		0,
			{
			UData_SKeyedTable16OfIndexedTables16(keyedTables16OfIndexedTables16_keyedEntries_foreignToUnicode_2)
			}
		}
	};

LOCAL_D const SCnvConversionData::SOneDirectionData::SRange unicodeToForeignDataRanges[]=
	{
		{
		0x0025,
		0x003f,
		SCnvConversionData::SOneDirectionData::SRange::EDirect,
		1,
		0,
			{
			0
			}
		},
		{
		0x0041,
		0x005a,
		SCnvConversionData::SOneDirectionData::SRange::EDirect,
		1,
		0,
			{
			0
			}
		},
		{
		0x0061,
		0x007a,
		SCnvConversionData::SOneDirectionData::SRange::EDirect,
		1,
		0,
			{
			0
			}
		},
		{
		0x000c,
		0x000c,
		SCnvConversionData::SOneDirectionData::SRange::EOffset,
		2,
		0,
			{
			STATIC_CAST(TUint, 6910)
			}
		},
		{
		0x005b,
		0x005e,
		SCnvConversionData::SOneDirectionData::SRange::EKeyedTable16OfIndexedTables16,
		2,
		0,
			{
			UData_SKeyedTable16OfIndexedTables16(keyedTables16OfIndexedTables16_keyedEntries_unicodeToForeign_1)
			}
		},
		{
		0x007b,
		0x007e,
		SCnvConversionData::SOneDirectionData::SRange::EKeyedTable16OfIndexedTables16,
		2,
		0,
			{
			UData_SKeyedTable16OfIndexedTables16(keyedTables16OfIndexedTables16_keyedEntries_unicodeToForeign_2)
			}
		},
		{
		0x000a,
		0x2211,
		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
	};

