diff -r ebe688cedc25 -r 7fdbb852d323 mobilemessaging/smsui/charconvplugin/G_SmsStrict.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mobilemessaging/smsui/charconvplugin/G_SmsStrict.cpp Wed Sep 01 12:31:54 2010 +0100 @@ -0,0 +1,971 @@ +/* +* Copyright (c) 2002 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: G_SmsStrict implementation +* +*/ + + + +// G_SmsStrict.cpp +// +// Copyright (c) 2003 Symbian Ltd. All rights reserved. +// + +#include +#include +#include + +#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 SCnvConversionData::SOneDirectionData::SRange::UData::SIndexedTable16::SEntry indexedTable16_foreignToUnicode_1[]= + { + { + 0x0040 + }, + { + 0x00a3 + }, + { + 0x0024 + }, + { + 0x00a5 + }, + { + 0x00e8 + }, + { + 0x00e9 + }, + { + 0x00f9 + }, + { + 0x00ec + }, + { + 0x00f2 + }, + { + 0x00e7 + }, + { + 0x000a + }, + { + 0x00d8 + }, + { + 0x00f8 + }, + { + 0x000d + }, + { + 0x00c5 + }, + { + 0x00e5 + }, + { + 0x0394 + }, + { + 0x005f + }, + { + 0x03a6 + }, + { + 0x0393 + }, + { + 0x039b + }, + { + 0x03a9 + }, + { + 0x03a0 + }, + { + 0x03a8 + }, + { + 0x03a3 + }, + { + 0x0398 + }, + { + 0x039e + } + }; + +LOCAL_D const SCnvConversionData::SOneDirectionData::SRange::UData::SIndexedTable16::SEntry indexedTable16_foreignToUnicode_2[]= + { + { + 0x00c4 + }, + { + 0x00d6 + }, + { + 0x00d1 + }, + { + 0x00dc + }, + { + 0x00a7 + }, + { + 0x00bf + } + }; + +LOCAL_D const SCnvConversionData::SOneDirectionData::SRange::UData::SKeyedTable1616::SEntry keyedTable1616_foreignToUnicode_1[]= + { + { + 0x1c, + 0x00c6 + }, + { + 0x1d, + 0x00e6 + }, + { + 0x1e, + 0x00df + }, + { + 0x1f, + 0x00c9 + } + }; + +LOCAL_D const SCnvConversionData::SOneDirectionData::SRange::UData::SKeyedTable1616::SEntry keyedTable1616_foreignToUnicode_2[]= + { + { + 0x7b, + 0x00e4 + }, + { + 0x7c, + 0x00f6 + }, + { + 0x7d, + 0x00f1 + }, + { + 0x7e, + 0x00fc + }, + { + 0x7f, + 0x00e0 + } + }; + +LOCAL_D const SCnvConversionData::SOneDirectionData::SRange::UData::SKeyedTable1616::SEntry keyedTable1616_foreignToUnicode_3[]= + { + { + 0x1b28, + 0x007b + }, + { + 0x1b29, + 0x007d + } + }; + +LOCAL_D const SCnvConversionData::SOneDirectionData::SRange::UData::SKeyedTable1616::SEntry keyedTable1616_foreignToUnicode_4[]= + { + { + 0x1b3c, + 0x005b + }, + { + 0x1b3d, + 0x007e + }, + { + 0x1b3e, + 0x005d + } + }; + +LOCAL_D const SCnvConversionData::SOneDirectionData::SRange::UData::SIndexedTable16::SEntry indexedTable16_unicodeToForeign_1[]= + { + { + 0x7b + }, + { + 0x0f + }, + { + 0x1d + }, + { + 0x09 + }, + { + 0x04 + }, + { + 0x05 + } + }; + +LOCAL_D const SCnvConversionData::SOneDirectionData::SRange::UData::SKeyedTable1616::SEntry keyedTable1616_unicodeToForeign_1[]= + { + { + 0x005b, + 0x1b3c + }, + { + 0x005c, + 0x1b2f + }, + { + 0x005d, + 0x1b3e + }, + { + 0x005e, + 0x1b14 + } + }; + +LOCAL_D const SCnvConversionData::SOneDirectionData::SRange::UData::SKeyedTable1616::SEntry keyedTable1616_unicodeToForeign_2[]= + { + { + 0x007b, + 0x1b28 + }, + { + 0x007c, + 0x1b40 + }, + { + 0x007d, + 0x1b29 + }, + { + 0x007e, + 0x1b3d + } + }; + +LOCAL_D const SCnvConversionData::SOneDirectionData::SRange::UData::SKeyedTable1616::SEntry keyedTable1616_unicodeToForeign_3[]= + { + { + 0x00a3, + 0x01 + }, + { + 0x00a4, + 0x24 + }, + { + 0x00a5, + 0x03 + } + }; + +LOCAL_D const SCnvConversionData::SOneDirectionData::SRange::UData::SKeyedTable1616::SEntry keyedTable1616_unicodeToForeign_4[]= + { + { + 0x00c4, + 0x5b + }, + { + 0x00c5, + 0x0e + }, + { + 0x00c6, + 0x1c + } + }; + +LOCAL_D const SCnvConversionData::SOneDirectionData::SRange::UData::SKeyedTable1616::SEntry keyedTable1616_unicodeToForeign_5[]= + { + { + 0x00df, + 0x1e + }, + { + 0x00e0, + 0x7f + } + }; + +LOCAL_D const SCnvConversionData::SOneDirectionData::SRange::UData::SKeyedTable1616::SEntry keyedTable1616_unicodeToForeign_6[]= + { + { + 0x00f1, + 0x7d + }, + { + 0x00f2, + 0x08 + } + }; + +LOCAL_D const SCnvConversionData::SOneDirectionData::SRange::UData::SKeyedTable1616::SEntry keyedTable1616_unicodeToForeign_7[]= + { + { + 0x00f8, + 0x0c + }, + { + 0x00f9, + 0x06 + } + }; + +LOCAL_D const SCnvConversionData::SOneDirectionData::SRange::UData::SKeyedTable1616::SEntry keyedTable1616_unicodeToForeign_8[]= + { + { + 0x0393, + 0x13 + }, + { + 0x0394, + 0x10 + } + }; + +LOCAL_D const SCnvConversionData::SOneDirectionData::SRange::UData::SKeyedTable1616::SEntry keyedTable1616_unicodeToForeign_9[]= + { + { + 0x03a8, + 0x17 + }, + { + 0x03a9, + 0x15 + } + }; + +LOCAL_D const SCnvConversionData::SVariableByteData::SRange foreignVariableByteDataRanges[]= + { + { + 0x00, + 0x1a, + 0, + 0 + }, + { + 0x1b, + 0x1b, + 1, + 0 + }, + { + 0x1c, + 0x7f, + 0, + 0 + } + }; + +LOCAL_D const SCnvConversionData::SOneDirectionData::SRange foreignToUnicodeDataRanges[]= + { + { + 0x00, + 0x1a, + SCnvConversionData::SOneDirectionData::SRange::EIndexedTable16, + 0, + 0, + { + UData_SIndexedTable16(indexedTable16_foreignToUnicode_1) + } + }, + { + 0x1c, + 0x1f, + SCnvConversionData::SOneDirectionData::SRange::EKeyedTable1616, + 0, + 0, + { + UData_SKeyedTable1616(keyedTable1616_foreignToUnicode_1) + } + }, + { + 0x20, + 0x23, + SCnvConversionData::SOneDirectionData::SRange::EDirect, + 0, + 0, + { + 0 + } + }, + { + 0x24, + 0x24, + SCnvConversionData::SOneDirectionData::SRange::EOffset, + 0, + 0, + { + STATIC_CAST(TUint, 128) + } + }, + { + 0x25, + 0x3f, + SCnvConversionData::SOneDirectionData::SRange::EDirect, + 0, + 0, + { + 0 + } + }, + { + 0x40, + 0x40, + SCnvConversionData::SOneDirectionData::SRange::EOffset, + 0, + 0, + { + STATIC_CAST(TUint, 97) + } + }, + { + 0x41, + 0x5a, + SCnvConversionData::SOneDirectionData::SRange::EDirect, + 0, + 0, + { + 0 + } + }, + { + 0x5b, + 0x60, + SCnvConversionData::SOneDirectionData::SRange::EIndexedTable16, + 0, + 0, + { + UData_SIndexedTable16(indexedTable16_foreignToUnicode_2) + } + }, + { + 0x61, + 0x7a, + SCnvConversionData::SOneDirectionData::SRange::EDirect, + 0, + 0, + { + 0 + } + }, + { + 0x7b, + 0x7f, + SCnvConversionData::SOneDirectionData::SRange::EKeyedTable1616, + 0, + 0, + { + UData_SKeyedTable1616(keyedTable1616_foreignToUnicode_2) + } + }, + { + 0x1b0a, + 0x1b0a, + SCnvConversionData::SOneDirectionData::SRange::EOffset, + 0, + 0, + { + STATIC_CAST(TUint, -6910) + } + }, + { + 0x1b14, + 0x1b14, + SCnvConversionData::SOneDirectionData::SRange::EOffset, + 0, + 0, + { + STATIC_CAST(TUint, -6838) + } + }, + { + 0x1b28, + 0x1b29, + SCnvConversionData::SOneDirectionData::SRange::EKeyedTable1616, + 0, + 0, + { + UData_SKeyedTable1616(keyedTable1616_foreignToUnicode_3) + } + }, + { + 0x1b2f, + 0x1b2f, + SCnvConversionData::SOneDirectionData::SRange::EOffset, + 0, + 0, + { + STATIC_CAST(TUint, -6867) + } + }, + { + 0x1b3c, + 0x1b3e, + SCnvConversionData::SOneDirectionData::SRange::EKeyedTable1616, + 0, + 0, + { + UData_SKeyedTable1616(keyedTable1616_foreignToUnicode_4) + } + }, + { + 0x1b40, + 0x1b40, + SCnvConversionData::SOneDirectionData::SRange::EOffset, + 0, + 0, + { + STATIC_CAST(TUint, -6852) + } + }, + { + 0x1b65, + 0x1b65, + SCnvConversionData::SOneDirectionData::SRange::EOffset, + 0, + 0, + { + STATIC_CAST(TUint, 1351) + } + } + }; + +LOCAL_D const SCnvConversionData::SOneDirectionData::SRange unicodeToForeignDataRanges[]= + { + { + 0x000a, + 0x000a, + SCnvConversionData::SOneDirectionData::SRange::EDirect, + 1, + 0, + { + 0 + } + }, + { + 0x000c, + 0x000c, + SCnvConversionData::SOneDirectionData::SRange::EOffset, + 2, + 0, + { + STATIC_CAST(TUint, 6910) + } + }, + { + 0x000d, + 0x000d, + SCnvConversionData::SOneDirectionData::SRange::EDirect, + 1, + 0, + { + 0 + } + }, + { + 0x0020, + 0x0023, + SCnvConversionData::SOneDirectionData::SRange::EDirect, + 1, + 0, + { + 0 + } + }, + { + 0x0024, + 0x0024, + SCnvConversionData::SOneDirectionData::SRange::EOffset, + 1, + 0, + { + STATIC_CAST(TUint, -34) + } + }, + { + 0x0025, + 0x003f, + SCnvConversionData::SOneDirectionData::SRange::EDirect, + 1, + 0, + { + 0 + } + }, + { + 0x0040, + 0x0040, + SCnvConversionData::SOneDirectionData::SRange::EOffset, + 1, + 0, + { + STATIC_CAST(TUint, -64) + } + }, + { + 0x0041, + 0x005a, + SCnvConversionData::SOneDirectionData::SRange::EDirect, + 1, + 0, + { + 0 + } + }, + { + 0x005b, + 0x005e, + SCnvConversionData::SOneDirectionData::SRange::EKeyedTable1616, + 2, + 0, + { + UData_SKeyedTable1616(keyedTable1616_unicodeToForeign_1) + } + }, + { + 0x005f, + 0x005f, + SCnvConversionData::SOneDirectionData::SRange::EOffset, + 1, + 0, + { + STATIC_CAST(TUint, -78) + } + }, + { + 0x0061, + 0x007a, + SCnvConversionData::SOneDirectionData::SRange::EDirect, + 1, + 0, + { + 0 + } + }, + { + 0x007b, + 0x007e, + SCnvConversionData::SOneDirectionData::SRange::EKeyedTable1616, + 2, + 0, + { + UData_SKeyedTable1616(keyedTable1616_unicodeToForeign_2) + } + }, + { + 0x00a1, + 0x00a1, + SCnvConversionData::SOneDirectionData::SRange::EOffset, + 1, + 0, + { + STATIC_CAST(TUint, -97) + } + }, + { + 0x00a3, + 0x00a5, + SCnvConversionData::SOneDirectionData::SRange::EKeyedTable1616, + 1, + 0, + { + UData_SKeyedTable1616(keyedTable1616_unicodeToForeign_3) + } + }, + { + 0x00a7, + 0x00a7, + SCnvConversionData::SOneDirectionData::SRange::EOffset, + 1, + 0, + { + STATIC_CAST(TUint, -72) + } + }, + { + 0x00bf, + 0x00bf, + SCnvConversionData::SOneDirectionData::SRange::EOffset, + 1, + 0, + { + STATIC_CAST(TUint, -95) + } + }, + { + 0x00c4, + 0x00c6, + SCnvConversionData::SOneDirectionData::SRange::EKeyedTable1616, + 1, + 0, + { + UData_SKeyedTable1616(keyedTable1616_unicodeToForeign_4) + } + }, + { + 0x00c9, + 0x00c9, + SCnvConversionData::SOneDirectionData::SRange::EOffset, + 1, + 0, + { + STATIC_CAST(TUint, -170) + } + }, + { + 0x00d1, + 0x00d1, + SCnvConversionData::SOneDirectionData::SRange::EOffset, + 1, + 0, + { + STATIC_CAST(TUint, -116) + } + }, + { + 0x00d6, + 0x00d6, + SCnvConversionData::SOneDirectionData::SRange::EOffset, + 1, + 0, + { + STATIC_CAST(TUint, -122) + } + }, + { + 0x00d8, + 0x00d8, + SCnvConversionData::SOneDirectionData::SRange::EOffset, + 1, + 0, + { + STATIC_CAST(TUint, -205) + } + }, + { + 0x00dc, + 0x00dc, + SCnvConversionData::SOneDirectionData::SRange::EOffset, + 1, + 0, + { + STATIC_CAST(TUint, -126) + } + }, + { + 0x00df, + 0x00e0, + SCnvConversionData::SOneDirectionData::SRange::EKeyedTable1616, + 1, + 0, + { + UData_SKeyedTable1616(keyedTable1616_unicodeToForeign_5) + } + }, + { + 0x00e4, + 0x00e9, + SCnvConversionData::SOneDirectionData::SRange::EIndexedTable16, + 1, + 0, + { + UData_SIndexedTable16(indexedTable16_unicodeToForeign_1) + } + }, + { + 0x00ec, + 0x00ec, + SCnvConversionData::SOneDirectionData::SRange::EOffset, + 1, + 0, + { + STATIC_CAST(TUint, -229) + } + }, + { + 0x00f1, + 0x00f2, + SCnvConversionData::SOneDirectionData::SRange::EKeyedTable1616, + 1, + 0, + { + UData_SKeyedTable1616(keyedTable1616_unicodeToForeign_6) + } + }, + { + 0x00f6, + 0x00f6, + SCnvConversionData::SOneDirectionData::SRange::EOffset, + 1, + 0, + { + STATIC_CAST(TUint, -122) + } + }, + { + 0x00f8, + 0x00f9, + SCnvConversionData::SOneDirectionData::SRange::EKeyedTable1616, + 1, + 0, + { + UData_SKeyedTable1616(keyedTable1616_unicodeToForeign_7) + } + }, + { + 0x00fc, + 0x00fc, + SCnvConversionData::SOneDirectionData::SRange::EOffset, + 1, + 0, + { + STATIC_CAST(TUint, -126) + } + }, + { + 0x0393, + 0x0394, + SCnvConversionData::SOneDirectionData::SRange::EKeyedTable1616, + 1, + 0, + { + UData_SKeyedTable1616(keyedTable1616_unicodeToForeign_8) + } + }, + { + 0x0398, + 0x0398, + SCnvConversionData::SOneDirectionData::SRange::EOffset, + 1, + 0, + { + STATIC_CAST(TUint, -895) + } + }, + { + 0x039b, + 0x039b, + SCnvConversionData::SOneDirectionData::SRange::EOffset, + 1, + 0, + { + STATIC_CAST(TUint, -903) + } + }, + { + 0x039e, + 0x039e, + SCnvConversionData::SOneDirectionData::SRange::EOffset, + 1, + 0, + { + STATIC_CAST(TUint, -900) + } + }, + { + 0x03a0, + 0x03a0, + SCnvConversionData::SOneDirectionData::SRange::EOffset, + 1, + 0, + { + STATIC_CAST(TUint, -906) + } + }, + { + 0x03a3, + 0x03a3, + SCnvConversionData::SOneDirectionData::SRange::EOffset, + 1, + 0, + { + STATIC_CAST(TUint, -907) + } + }, + { + 0x03a6, + 0x03a6, + SCnvConversionData::SOneDirectionData::SRange::EOffset, + 1, + 0, + { + STATIC_CAST(TUint, -916) + } + }, + { + 0x03a8, + 0x03a9, + SCnvConversionData::SOneDirectionData::SRange::EKeyedTable1616, + 1, + 0, + { + UData_SKeyedTable1616(keyedTable1616_unicodeToForeign_9) + } + }, + { + 0x20ac, + 0x20ac, + SCnvConversionData::SOneDirectionData::SRange::EOffset, + 2, + 0, + { + STATIC_CAST(TUint, -1351) + } + } + }; + +GLDEF_D const SCnvConversionData conversionData= + { + SCnvConversionData::EFixedBigEndian, + { + ARRAY_LENGTH(foreignVariableByteDataRanges), + foreignVariableByteDataRanges + }, + { + ARRAY_LENGTH(foreignToUnicodeDataRanges), + foreignToUnicodeDataRanges + }, + { + ARRAY_LENGTH(unicodeToForeignDataRanges), + unicodeToForeignDataRanges + }, + NULL, + NULL + }; +