diff -r 748ec5531811 -r 336bee5c2d35 charconvfw/Charconvplugin/src/G_Win1258.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/charconvfw/Charconvplugin/src/G_Win1258.cpp Wed Sep 01 12:39:40 2010 +0100 @@ -0,0 +1,579 @@ +/* +* 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 +#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 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 + }; +