charconvfw/Charconvplugin/src/G_WIN1251.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Fri, 16 Apr 2010 16:55:07 +0300
changeset 16 56cd22a7a1cb
parent 0 1fb32624e06b
permissions -rw-r--r--
Revision: 201011 Kit: 201015

/*
* Copyright (c) 1251 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 "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 SCnvConversionData::SOneDirectionData::SRange::UData::SIndexedTable16::SEntry indexedTable16_foreignToUnicode_1[]=
	{
		{
		0x0402
		},
		{
		0x0403
		},
		{
		0x201a
		},
		{
		0x0453
		},
		{
		0x201e
		},
		{
		0x2026
		},
		{
		0x2020
		},
		{
		0x2021
		},
		{
		0x20ac
		},
		{
		0x2030
		},
		{
		0x0409
		},
		{
		0x2039
		},
		{
		0x040a
		},
		{
		0x040c
		},
		{
		0x040b
		},
		{
		0x040f
		},
		{
		0x0452
		},
		{
		0x2018
		},
		{
		0x2019
		},
		{
		0x201c
		},
		{
		0x201d
		},
		{
		0x2022
		},
		{
		0x2013
		},
		{
		0x2014
		},
		{
		0x0098
		},
		{
		0x2122
		},
		{
		0x0459
		},
		{
		0x203a
		},
		{
		0x045a
		},
		{
		0x045c
		},
		{
		0x045b
		},
		{
		0x045f
		},
		{
		0x00a0
		},
		{
		0x040e
		},
		{
		0x045e
		},
		{
		0x0408
		},
		{
		0x00a4
		},
		{
		0x0490
		},
		{
		0x00a6
		},
		{
		0x00a7
		},
		{
		0x0401
		},
		{
		0x00a9
		},
		{
		0x0404
		},
		{
		0x00ab
		},
		{
		0x00ac
		},
		{
		0x00ad
		},
		{
		0x00ae
		},
		{
		0x0407
		},
		{
		0x00b0
		},
		{
		0x00b1
		},
		{
		0x0406
		},
		{
		0x0456
		},
		{
		0x0491
		},
		{
		0x00b5
		},
		{
		0x00b6
		},
		{
		0x00b7
		},
		{
		0x0451
		},
		{
		0x2116
		},
		{
		0x0454
		},
		{
		0x00bb
		},
		{
		0x0458
		},
		{
		0x0405
		},
		{
		0x0455
		},
		{
		0x0457
		},
		{
		0x0410
		},
		{
		0x0411
		},
		{
		0x0412
		},
		{
		0x0413
		},
		{
		0x0414
		},
		{
		0x0415
		},
		{
		0x0416
		},
		{
		0x0417
		},
		{
		0x0418
		},
		{
		0x0419
		},
		{
		0x041a
		},
		{
		0x041b
		},
		{
		0x041c
		},
		{
		0x041d
		},
		{
		0x041e
		},
		{
		0x041f
		},
		{
		0x0420
		},
		{
		0x0421
		},
		{
		0x0422
		},
		{
		0x0423
		},
		{
		0x0424
		},
		{
		0x0425
		},
		{
		0x0426
		},
		{
		0x0427
		},
		{
		0x0428
		},
		{
		0x0429
		},
		{
		0x042a
		},
		{
		0x042b
		},
		{
		0x042c
		},
		{
		0x042d
		},
		{
		0x042e
		},
		{
		0x042f
		},
		{
		0x0430
		},
		{
		0x0431
		},
		{
		0x0432
		},
		{
		0x0433
		},
		{
		0x0434
		},
		{
		0x0435
		},
		{
		0x0436
		},
		{
		0x0437
		},
		{
		0x0438
		},
		{
		0x0439
		},
		{
		0x043a
		},
		{
		0x043b
		},
		{
		0x043c
		},
		{
		0x043d
		},
		{
		0x043e
		},
		{
		0x043f
		},
		{
		0x0440
		},
		{
		0x0441
		},
		{
		0x0442
		},
		{
		0x0443
		},
		{
		0x0444
		},
		{
		0x0445
		},
		{
		0x0446
		},
		{
		0x0447
		},
		{
		0x0448
		},
		{
		0x0449
		},
		{
		0x044a
		},
		{
		0x044b
		},
		{
		0x044c
		},
		{
		0x044d
		},
		{
		0x044e
		},
		{
		0x044f
		}
	};

LOCAL_D const SCnvConversionData::SOneDirectionData::SRange::UData::SIndexedTable16::SEntry indexedTable16_unicodeToForeign_1[]=
	{
		{
		0xa8
		},
		{
		0x80
		},
		{
		0x81
		},
		{
		0xaa
		},
		{
		0xbd
		},
		{
		0xb2
		},
		{
		0xaf
		},
		{
		0xa3
		},
		{
		0x8a
		},
		{
		0x8c
		},
		{
		0x8e
		},
		{
		0x8d
		}
	};

LOCAL_D const SCnvConversionData::SOneDirectionData::SRange::UData::SIndexedTable16::SEntry indexedTable16_unicodeToForeign_2[]=
	{
		{
		0xa1
		},
		{
		0x8f
		},
		{
		0xc0
		},
		{
		0xc1
		},
		{
		0xc2
		},
		{
		0xc3
		},
		{
		0xc4
		},
		{
		0xc5
		},
		{
		0xc6
		},
		{
		0xc7
		},
		{
		0xc8
		},
		{
		0xc9
		},
		{
		0xca
		},
		{
		0xcb
		},
		{
		0xcc
		},
		{
		0xcd
		},
		{
		0xce
		},
		{
		0xcf
		},
		{
		0xd0
		},
		{
		0xd1
		},
		{
		0xd2
		},
		{
		0xd3
		},
		{
		0xd4
		},
		{
		0xd5
		},
		{
		0xd6
		},
		{
		0xd7
		},
		{
		0xd8
		},
		{
		0xd9
		},
		{
		0xda
		},
		{
		0xdb
		},
		{
		0xdc
		},
		{
		0xdd
		},
		{
		0xde
		},
		{
		0xdf
		},
		{
		0xe0
		},
		{
		0xe1
		},
		{
		0xe2
		},
		{
		0xe3
		},
		{
		0xe4
		},
		{
		0xe5
		},
		{
		0xe6
		},
		{
		0xe7
		},
		{
		0xe8
		},
		{
		0xe9
		},
		{
		0xea
		},
		{
		0xeb
		},
		{
		0xec
		},
		{
		0xed
		},
		{
		0xee
		},
		{
		0xef
		},
		{
		0xf0
		},
		{
		0xf1
		},
		{
		0xf2
		},
		{
		0xf3
		},
		{
		0xf4
		},
		{
		0xf5
		},
		{
		0xf6
		},
		{
		0xf7
		},
		{
		0xf8
		},
		{
		0xf9
		},
		{
		0xfa
		},
		{
		0xfb
		},
		{
		0xfc
		},
		{
		0xfd
		},
		{
		0xfe
		},
		{
		0xff
		}
	};

LOCAL_D const SCnvConversionData::SOneDirectionData::SRange::UData::SIndexedTable16::SEntry indexedTable16_unicodeToForeign_3[]=
	{
		{
		0xb8
		},
		{
		0x90
		},
		{
		0x83
		},
		{
		0xba
		},
		{
		0xbe
		},
		{
		0xb3
		},
		{
		0xbf
		},
		{
		0xbc
		},
		{
		0x9a
		},
		{
		0x9c
		},
		{
		0x9e
		},
		{
		0x9d
		}
	};

LOCAL_D const SCnvConversionData::SOneDirectionData::SRange::UData::SKeyedTable1616::SEntry keyedTable1616_unicodeToForeign_1[]=
	{
		{
		0x0098,
		0x98
		},
		{
		0x00a0,
		0xa0
		},
		{
		0x00a4,
		0xa4
		},
		{
		0x00a6,
		0xa6
		},
		{
		0x00a7,
		0xa7
		},
		{
		0x00a9,
		0xa9
		},
		{
		0x00ab,
		0xab
		},
		{
		0x00ac,
		0xac
		},
		{
		0x00ad,
		0xad
		},
		{
		0x00ae,
		0xae
		},
		{
		0x00b0,
		0xb0
		},
		{
		0x00b1,
		0xb1
		},
		{
		0x00b5,
		0xb5
		},
		{
		0x00b6,
		0xb6
		},
		{
		0x00b7,
		0xb7
		},
		{
		0x00bb,
		0xbb
		}
	};

LOCAL_D const SCnvConversionData::SOneDirectionData::SRange::UData::SKeyedTable1616::SEntry keyedTable1616_unicodeToForeign_2[]=
	{
		{
		0x045e,
		0xa2
		},
		{
		0x045f,
		0x9f
		},
		{
		0x0490,
		0xa5
		},
		{
		0x0491,
		0xb4
		},
		{
		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
		},
		{
		0x20ac,
		0x88
		},
		{
		0x2116,
		0xb9
		},
		{
		0x2122,
		0x99
		}
	};

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

LOCAL_D const SCnvConversionData::SOneDirectionData::SRange foreignToUnicodeDataRanges[]=
	{
		{
		0x00,
		0x7f,
		SCnvConversionData::SOneDirectionData::SRange::EDirect,
		0,
		0,
			{
			0,
			0
			}
		},
		{
		0x80,
		0xff,
		SCnvConversionData::SOneDirectionData::SRange::EIndexedTable16,
		0,
		0,
			{
			REINTERPRET_CAST(TUint, CONST_CAST( SCnvConversionData::SOneDirectionData::SRange::UData::SIndexedTable16::SEntry*, indexedTable16_foreignToUnicode_1)),
			0
			}
		}
	};

LOCAL_D const SCnvConversionData::SOneDirectionData::SRange unicodeToForeignDataRanges[]=
	{
		{
		0x0000,
		0x007f,
		SCnvConversionData::SOneDirectionData::SRange::EDirect,
		1,
		0,
			{
			0,
			0
			}
		},
		{
		0x0401,
		0x040c,
		SCnvConversionData::SOneDirectionData::SRange::EIndexedTable16,
		1,
		0,
			{
			REINTERPRET_CAST(TUint, CONST_CAST( SCnvConversionData::SOneDirectionData::SRange::UData::SIndexedTable16::SEntry*, indexedTable16_unicodeToForeign_1)),
			0
			}
		},
		{
		0x040e,
		0x044f,
		SCnvConversionData::SOneDirectionData::SRange::EIndexedTable16,
		1,
		0,
			{
			REINTERPRET_CAST(TUint, CONST_CAST( SCnvConversionData::SOneDirectionData::SRange::UData::SIndexedTable16::SEntry*, indexedTable16_unicodeToForeign_2)),
			0
			}
		},
		{
		0x0451,
		0x045c,
		SCnvConversionData::SOneDirectionData::SRange::EIndexedTable16,
		1,
		0,
			{
			REINTERPRET_CAST(TUint, CONST_CAST( SCnvConversionData::SOneDirectionData::SRange::UData::SIndexedTable16::SEntry*, indexedTable16_unicodeToForeign_3)),
			0
			}
		},
		{
		0x0098,
		0x00bb,
		SCnvConversionData::SOneDirectionData::SRange::EKeyedTable1616,
		1,
		0,
			{
			STATIC_CAST(TUint, ARRAY_LENGTH(keyedTable1616_unicodeToForeign_1)),
			REINTERPRET_CAST(TUint, CONST_CAST(SCnvConversionData::SOneDirectionData::SRange::UData::SKeyedTable1616::SEntry*, keyedTable1616_unicodeToForeign_1))
			}
		},
		{
		0x045e,
		0x2122,
		SCnvConversionData::SOneDirectionData::SRange::EKeyedTable1616,
		1,
		0,
			{
			STATIC_CAST(TUint, ARRAY_LENGTH(keyedTable1616_unicodeToForeign_2)),
			REINTERPRET_CAST(TUint, CONST_CAST(SCnvConversionData::SOneDirectionData::SRange::UData::SKeyedTable1616::SEntry*, keyedTable1616_unicodeToForeign_2))
			}
		}
	};

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