diff -r 000000000000 -r 1fb32624e06b charconvfw/Charconvplugin/src/G_WIN1251.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/charconvfw/Charconvplugin/src/G_WIN1251.cpp Tue Feb 02 02:02:46 2010 +0200 @@ -0,0 +1,990 @@ +/* +* 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 "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 +#include +#include + +#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 + }; +