/*
* 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, "\x1a");

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

LOCAL_D const TUint16 keyedTables16OfIndexedTables16_indexedEntries_foreignToUnicode_1[]=
	{
	0x00a0,
	0x0126,
	0x02d8,
	0x00a3,
	0x00a4
	};

LOCAL_D const TUint16 keyedTables16OfIndexedTables16_indexedEntries_foreignToUnicode_2[]=
	{
	0x0124,
	0x00a7,
	0x00a8,
	0x0130,
	0x015e,
	0x011e,
	0x0134,
	0x00ad
	};

LOCAL_D const TUint16 keyedTables16OfIndexedTables16_indexedEntries_foreignToUnicode_3[]=
	{
	0x017b,
	0x00b0,
	0x0127,
	0x00b2,
	0x00b3,
	0x00b4,
	0x00b5,
	0x0125,
	0x00b7,
	0x00b8,
	0x0131,
	0x015f,
	0x011f,
	0x0135,
	0x00bd
	};

LOCAL_D const TUint16 keyedTables16OfIndexedTables16_indexedEntries_foreignToUnicode_4[]=
	{
	0x017c,
	0x00c0,
	0x00c1,
	0x00c2
	};

LOCAL_D const TUint16 keyedTables16OfIndexedTables16_indexedEntries_foreignToUnicode_5[]=
	{
	0x00c4,
	0x010a,
	0x0108,
	0x00c7,
	0x00c8,
	0x00c9,
	0x00ca,
	0x00cb,
	0x00cc,
	0x00cd,
	0x00ce,
	0x00cf
	};

LOCAL_D const TUint16 keyedTables16OfIndexedTables16_indexedEntries_foreignToUnicode_6[]=
	{
	0x00d1,
	0x00d2,
	0x00d3,
	0x00d4,
	0x0120,
	0x00d6,
	0x00d7,
	0x011c,
	0x00d9,
	0x00da,
	0x00db,
	0x00dc,
	0x016c,
	0x015c,
	0x00df,
	0x00e0,
	0x00e1,
	0x00e2
	};

LOCAL_D const TUint16 keyedTables16OfIndexedTables16_indexedEntries_foreignToUnicode_7[]=
	{
	0x00e4,
	0x010b,
	0x0109,
	0x00e7,
	0x00e8,
	0x00e9,
	0x00ea,
	0x00eb,
	0x00ec,
	0x00ed,
	0x00ee,
	0x00ef
	};

LOCAL_D const TUint16 keyedTables16OfIndexedTables16_indexedEntries_foreignToUnicode_8[]=
	{
	0x00f1,
	0x00f2,
	0x00f3,
	0x00f4,
	0x0121,
	0x00f6,
	0x00f7,
	0x011d,
	0x00f9,
	0x00fa,
	0x00fb,
	0x00fc,
	0x016d,
	0x015d,
	0x02d9
	};

LOCAL_D const SCnvConversionData::SOneDirectionData::SRange::UData::SKeyedTable16OfIndexedTables16::SKeyedEntry keyedTables16OfIndexedTables16_keyedEntries_foreignToUnicode_1[]=
	{
		{
		0xa0,
		0xa4,
		keyedTables16OfIndexedTables16_indexedEntries_foreignToUnicode_1
		},
		{
		0xa6,
		0xad,
		keyedTables16OfIndexedTables16_indexedEntries_foreignToUnicode_2
		},
		{
		0xaf,
		0xbd,
		keyedTables16OfIndexedTables16_indexedEntries_foreignToUnicode_3
		},
		{
		0xbf,
		0xc2,
		keyedTables16OfIndexedTables16_indexedEntries_foreignToUnicode_4
		},
		{
		0xc4,
		0xcf,
		keyedTables16OfIndexedTables16_indexedEntries_foreignToUnicode_5
		},
		{
		0xd1,
		0xe2,
		keyedTables16OfIndexedTables16_indexedEntries_foreignToUnicode_6
		},
		{
		0xe4,
		0xef,
		keyedTables16OfIndexedTables16_indexedEntries_foreignToUnicode_7
		},
		{
		0xf1,
		0xff,
		keyedTables16OfIndexedTables16_indexedEntries_foreignToUnicode_8
		}
	};

LOCAL_D const SCnvConversionData::SOneDirectionData::SRange::UData::SKeyedTable1616::SEntry keyedTable1616_unicodeToForeign_1[]=
	{
		{
		0x00a0,
		0xa0
		},
		{
		0x00a3,
		0xa3
		},
		{
		0x00a4,
		0xa4
		},
		{
		0x00a7,
		0xa7
		},
		{
		0x00a8,
		0xa8
		},
		{
		0x00ad,
		0xad
		},
		{
		0x00b0,
		0xb0
		},
		{
		0x00b2,
		0xb2
		},
		{
		0x00b3,
		0xb3
		},
		{
		0x00b4,
		0xb4
		},
		{
		0x00b5,
		0xb5
		},
		{
		0x00b7,
		0xb7
		},
		{
		0x00b8,
		0xb8
		},
		{
		0x00bd,
		0xbd
		},
		{
		0x00c0,
		0xc0
		},
		{
		0x00c1,
		0xc1
		},
		{
		0x00c2,
		0xc2
		},
		{
		0x00c4,
		0xc4
		},
		{
		0x00c7,
		0xc7
		},
		{
		0x00c8,
		0xc8
		},
		{
		0x00c9,
		0xc9
		},
		{
		0x00ca,
		0xca
		},
		{
		0x00cb,
		0xcb
		},
		{
		0x00cc,
		0xcc
		},
		{
		0x00cd,
		0xcd
		},
		{
		0x00ce,
		0xce
		},
		{
		0x00cf,
		0xcf
		},
		{
		0x00d1,
		0xd1
		},
		{
		0x00d2,
		0xd2
		},
		{
		0x00d3,
		0xd3
		},
		{
		0x00d4,
		0xd4
		},
		{
		0x00d6,
		0xd6
		},
		{
		0x00d7,
		0xd7
		},
		{
		0x00d9,
		0xd9
		},
		{
		0x00da,
		0xda
		},
		{
		0x00db,
		0xdb
		},
		{
		0x00dc,
		0xdc
		},
		{
		0x00df,
		0xdf
		},
		{
		0x00e0,
		0xe0
		},
		{
		0x00e1,
		0xe1
		},
		{
		0x00e2,
		0xe2
		},
		{
		0x00e4,
		0xe4
		},
		{
		0x00e7,
		0xe7
		},
		{
		0x00e8,
		0xe8
		},
		{
		0x00e9,
		0xe9
		},
		{
		0x00ea,
		0xea
		},
		{
		0x00eb,
		0xeb
		},
		{
		0x00ec,
		0xec
		},
		{
		0x00ed,
		0xed
		},
		{
		0x00ee,
		0xee
		},
		{
		0x00ef,
		0xef
		},
		{
		0x00f1,
		0xf1
		},
		{
		0x00f2,
		0xf2
		},
		{
		0x00f3,
		0xf3
		},
		{
		0x00f4,
		0xf4
		},
		{
		0x00f6,
		0xf6
		},
		{
		0x00f7,
		0xf7
		},
		{
		0x00f9,
		0xf9
		},
		{
		0x00fa,
		0xfa
		},
		{
		0x00fb,
		0xfb
		},
		{
		0x00fc,
		0xfc
		},
		{
		0x0108,
		0xc6
		},
		{
		0x0109,
		0xe6
		},
		{
		0x010a,
		0xc5
		},
		{
		0x010b,
		0xe5
		},
		{
		0x011c,
		0xd8
		},
		{
		0x011d,
		0xf8
		},
		{
		0x011e,
		0xab
		},
		{
		0x011f,
		0xbb
		},
		{
		0x0120,
		0xd5
		},
		{
		0x0121,
		0xf5
		},
		{
		0x0124,
		0xa6
		},
		{
		0x0125,
		0xb6
		},
		{
		0x0126,
		0xa1
		},
		{
		0x0127,
		0xb1
		},
		{
		0x0130,
		0xa9
		},
		{
		0x0131,
		0xb9
		},
		{
		0x0134,
		0xac
		},
		{
		0x0135,
		0xbc
		},
		{
		0x015c,
		0xde
		},
		{
		0x015d,
		0xfe
		},
		{
		0x015e,
		0xaa
		},
		{
		0x015f,
		0xba
		},
		{
		0x016c,
		0xdd
		},
		{
		0x016d,
		0xfd
		},
		{
		0x017b,
		0xaf
		},
		{
		0x017c,
		0xbf
		},
		{
		0x02d8,
		0xa2
		},
		{
		0x02d9,
		0xff
		}
	};

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

LOCAL_D const SCnvConversionData::SOneDirectionData::SRange foreignToUnicodeDataRanges[]=
	{
		{
		0x00,
		0x9f,
		SCnvConversionData::SOneDirectionData::SRange::EDirect,
		0,
		0,
			{
			0
			}
		},
		{
		0xa0,
		0xff,
		SCnvConversionData::SOneDirectionData::SRange::EKeyedTable16OfIndexedTables16,
		0,
		0,
			{
			UData_SKeyedTable16OfIndexedTables16(keyedTables16OfIndexedTables16_keyedEntries_foreignToUnicode_1)
			}
		}
	};

LOCAL_D const SCnvConversionData::SOneDirectionData::SRange unicodeToForeignDataRanges[]=
	{
		{
		0x0000,
		0x009f,
		SCnvConversionData::SOneDirectionData::SRange::EDirect,
		1,
		0,
			{
			0
			}
		},
		{
		0x00a0,
		0x02d9,
		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
	};

