charconvfw/charconvplugins/src/plugins/EUCJP_PACKED_2.CPP
changeset 40 91ef7621b7fc
parent 0 1fb32624e06b
child 55 336bee5c2d35
equal deleted inserted replaced
21:f2f7b3284356 40:91ef7621b7fc
   281         const TDesC8& aReplacementForUnconvertibleUnicodeCharacters,
   281         const TDesC8& aReplacementForUnconvertibleUnicodeCharacters,
   282         TDes8& aForeign,
   282         TDes8& aForeign,
   283         const TDesC16& aUnicode,
   283         const TDesC16& aUnicode,
   284         CCnvCharacterSetConverter::TArrayOfAscendingIndices& aIndicesOfUnconvertibleCharacters)
   284         CCnvCharacterSetConverter::TArrayOfAscendingIndices& aIndicesOfUnconvertibleCharacters)
   285     {
   285     {
       
   286     TInt ret = KErrNone;
   286     RArray<CnvUtilities::SCharacterSet> characterSets;
   287     RArray<CnvUtilities::SCharacterSet> characterSets;
   287     if ( FeatureManager::FeatureSupported(KFeatureIdJapanesePicto) )
   288     if ( FeatureManager::FeatureSupported(KFeatureIdJapanesePicto) )
   288         {      
   289         {      
   289         CnvUtilities::SCharacterSet characterSet;
   290         CnvUtilities::SCharacterSet characterSet;
   290 
   291 
   291         characterSet.iConversionData=&CnvJisRoman::ConversionData();
   292         characterSet.iConversionData=&CnvJisRoman::ConversionData();
   292         characterSet.iConvertFromIntermediateBufferInPlace=DummyConvertFromIntermediateBufferInPlace;
   293         characterSet.iConvertFromIntermediateBufferInPlace=DummyConvertFromIntermediateBufferInPlace;
   293         characterSet.iEscapeSequence=&KNullDesC8;
   294         characterSet.iEscapeSequence=&KNullDesC8;
   294         characterSets.Append(characterSet);
   295         ret |= characterSets.Append(characterSet);
   295         characterSet.iConversionData=&CnvJisX0208::ConversionData();
   296         characterSet.iConversionData=&CnvJisX0208::ConversionData();
   296         characterSet.iConvertFromIntermediateBufferInPlace=ConvertFromJisX0208ToEucJpPackedInPlace;
   297         characterSet.iConvertFromIntermediateBufferInPlace=ConvertFromJisX0208ToEucJpPackedInPlace;
   297         characterSet.iEscapeSequence=&KNullDesC8;
   298         characterSet.iEscapeSequence=&KNullDesC8;
   298         characterSets.Append(characterSet);
   299         ret |= characterSets.Append(characterSet);
   299         characterSet.iConversionData=&CnvHalfWidthKatakana8::ConversionData();
   300         characterSet.iConversionData=&CnvHalfWidthKatakana8::ConversionData();
   300         characterSet.iConvertFromIntermediateBufferInPlace=ConvertFromHalfWidthKatakana8ToEucJpPackedInPlace;
   301         characterSet.iConvertFromIntermediateBufferInPlace=ConvertFromHalfWidthKatakana8ToEucJpPackedInPlace;
   301         characterSet.iEscapeSequence=&KNullDesC8;
   302         characterSet.iEscapeSequence=&KNullDesC8;
   302         characterSets.Append(characterSet);
   303         ret |= characterSets.Append(characterSet);
   303         characterSet.iConversionData=&CnvJisX0212::ConversionData();
   304         characterSet.iConversionData=&CnvJisX0212::ConversionData();
   304         characterSet.iConvertFromIntermediateBufferInPlace=ConvertFromJisX0212ToEucJpPackedInPlace;
   305         characterSet.iConvertFromIntermediateBufferInPlace=ConvertFromJisX0212ToEucJpPackedInPlace;
   305         characterSet.iEscapeSequence=&KNullDesC8;
   306         characterSet.iEscapeSequence=&KNullDesC8;
   306         characterSets.Append(characterSet);
   307         ret |= characterSets.Append(characterSet);
   307 
   308 
   308         SetCharacterSetsForPictograph(characterSets, ECharsetEucJp);
   309         SetCharacterSetsForPictograph(characterSets, ECharsetEucJp);
   309         }
   310         }
   310     else
   311     else
   311         {            
   312         {            
   312         CnvUtilities::SCharacterSet characterSet;
   313         CnvUtilities::SCharacterSet characterSet;
   313         characterSet.iConversionData=&CnvJisRoman::ConversionData();
   314         characterSet.iConversionData=&CnvJisRoman::ConversionData();
   314         characterSet.iConvertFromIntermediateBufferInPlace=DummyConvertFromIntermediateBufferInPlace;
   315         characterSet.iConvertFromIntermediateBufferInPlace=DummyConvertFromIntermediateBufferInPlace;
   315         characterSet.iEscapeSequence=&KNullDesC8;
   316         characterSet.iEscapeSequence=&KNullDesC8;
   316         characterSets.Append(characterSet);
   317         ret |= characterSets.Append(characterSet);
   317         characterSet.iConversionData=&CnvJisX0208::ConversionData();
   318         characterSet.iConversionData=&CnvJisX0208::ConversionData();
   318         characterSet.iConvertFromIntermediateBufferInPlace=ConvertFromJisX0208ToEucJpPackedInPlace;
   319         characterSet.iConvertFromIntermediateBufferInPlace=ConvertFromJisX0208ToEucJpPackedInPlace;
   319         characterSet.iEscapeSequence=&KNullDesC8;
   320         characterSet.iEscapeSequence=&KNullDesC8;
   320         characterSets.Append(characterSet);
   321         ret |= characterSets.Append(characterSet);
   321         characterSet.iConversionData=&CnvHalfWidthKatakana8::ConversionData();
   322         characterSet.iConversionData=&CnvHalfWidthKatakana8::ConversionData();
   322         characterSet.iConvertFromIntermediateBufferInPlace=ConvertFromHalfWidthKatakana8ToEucJpPackedInPlace;
   323         characterSet.iConvertFromIntermediateBufferInPlace=ConvertFromHalfWidthKatakana8ToEucJpPackedInPlace;
   323         characterSet.iEscapeSequence=&KNullDesC8;
   324         characterSet.iEscapeSequence=&KNullDesC8;
   324         characterSets.Append(characterSet);
   325         ret |= characterSets.Append(characterSet);
   325         characterSet.iConversionData=&CnvJisX0212::ConversionData();
   326         characterSet.iConversionData=&CnvJisX0212::ConversionData();
   326         characterSet.iConvertFromIntermediateBufferInPlace=ConvertFromJisX0212ToEucJpPackedInPlace;
   327         characterSet.iConvertFromIntermediateBufferInPlace=ConvertFromJisX0212ToEucJpPackedInPlace;
   327         characterSet.iEscapeSequence=&KNullDesC8;
   328         characterSet.iEscapeSequence=&KNullDesC8;
   328         characterSets.Append(characterSet);
   329         ret |= characterSets.Append(characterSet);
   329         }
   330         }
       
   331     __ASSERT_DEBUG(!ret, User::Panic(_L("RArray append failure"), ret));
   330     TInt unconvert = CnvUtilities::ConvertFromUnicode(aDefaultEndiannessOfForeignCharacters, aReplacementForUnconvertibleUnicodeCharacters, aForeign, aUnicode, aIndicesOfUnconvertibleCharacters, characterSets.Array());
   332     TInt unconvert = CnvUtilities::ConvertFromUnicode(aDefaultEndiannessOfForeignCharacters, aReplacementForUnconvertibleUnicodeCharacters, aForeign, aUnicode, aIndicesOfUnconvertibleCharacters, characterSets.Array());
   331 
   333 
   332     characterSets.Close();
   334     characterSets.Close();
   333     return unconvert;
   335     return unconvert;
   334     }
   336     }
   573         const TDesC8& aForeign,
   575         const TDesC8& aForeign,
   574         TInt& /*aState*/,
   576         TInt& /*aState*/,
   575         TInt& aNumberOfUnconvertibleCharacters,
   577         TInt& aNumberOfUnconvertibleCharacters,
   576         TInt& aIndexOfFirstByteOfFirstUnconvertibleCharacter)
   578         TInt& aIndexOfFirstByteOfFirstUnconvertibleCharacter)
   577     {
   579     {
       
   580     TInt ret =KErrNone;
   578     RArray<CnvUtilities::SMethod> methods;
   581     RArray<CnvUtilities::SMethod> methods;
   579     if ( FeatureManager::FeatureSupported(KFeatureIdJapanesePicto) )
   582     if ( FeatureManager::FeatureSupported(KFeatureIdJapanesePicto) )
   580         {      
   583         {      
   581         CnvUtilities::SMethod method;
   584         CnvUtilities::SMethod method;
   582         SetMethodsForPictograph(methods, ECharsetEucJp);
   585         SetMethodsForPictograph(methods, ECharsetEucJp);
   583         method.iNumberOfBytesAbleToConvert=NumberOfBytesAbleToConvertToJisRoman;
   586         method.iNumberOfBytesAbleToConvert=NumberOfBytesAbleToConvertToJisRoman;
   584         method.iConvertToIntermediateBufferInPlace=DummyConvertToIntermediateBufferInPlace;
   587         method.iConvertToIntermediateBufferInPlace=DummyConvertToIntermediateBufferInPlace;
   585         method.iConversionData=&CnvJisRoman::ConversionData();
   588         method.iConversionData=&CnvJisRoman::ConversionData();
   586         method.iNumberOfBytesPerCharacter=1;
   589         method.iNumberOfBytesPerCharacter=1;
   587         method.iNumberOfCoreBytesPerCharacter=1;
   590         method.iNumberOfCoreBytesPerCharacter=1;
   588         methods.Append(method);
   591         ret |= methods.Append(method);
   589         method.iNumberOfBytesAbleToConvert=NumberOfBytesAbleToConvertToJisX0208;
   592         method.iNumberOfBytesAbleToConvert=NumberOfBytesAbleToConvertToJisX0208;
   590         method.iConvertToIntermediateBufferInPlace=ConvertToJisX0208FromEucJpPackedInPlace;
   593         method.iConvertToIntermediateBufferInPlace=ConvertToJisX0208FromEucJpPackedInPlace;
   591         method.iConversionData=&CnvJisX0208::ConversionData();
   594         method.iConversionData=&CnvJisX0208::ConversionData();
   592         method.iNumberOfBytesPerCharacter=2;
   595         method.iNumberOfBytesPerCharacter=2;
   593         method.iNumberOfCoreBytesPerCharacter=2;
   596         method.iNumberOfCoreBytesPerCharacter=2;
   594         methods.Append(method);
   597         ret |= methods.Append(method);
   595         method.iNumberOfBytesAbleToConvert=NumberOfBytesAbleToConvertToHalfWidthKatakana8;
   598         method.iNumberOfBytesAbleToConvert=NumberOfBytesAbleToConvertToHalfWidthKatakana8;
   596         method.iConvertToIntermediateBufferInPlace=ConvertToHalfWidthKatakana8FromEucJpPackedInPlace;
   599         method.iConvertToIntermediateBufferInPlace=ConvertToHalfWidthKatakana8FromEucJpPackedInPlace;
   597         method.iConversionData=&CnvHalfWidthKatakana8::ConversionData();
   600         method.iConversionData=&CnvHalfWidthKatakana8::ConversionData();
   598         method.iNumberOfBytesPerCharacter=2;
   601         method.iNumberOfBytesPerCharacter=2;
   599         method.iNumberOfCoreBytesPerCharacter=1;
   602         method.iNumberOfCoreBytesPerCharacter=1;
   600         methods.Append(method);
   603         ret |= methods.Append(method);
   601         method.iNumberOfBytesAbleToConvert=NumberOfBytesAbleToConvertToJisX0212;
   604         method.iNumberOfBytesAbleToConvert=NumberOfBytesAbleToConvertToJisX0212;
   602         method.iConvertToIntermediateBufferInPlace=ConvertToJisX0212FromEucJpPackedInPlace;
   605         method.iConvertToIntermediateBufferInPlace=ConvertToJisX0212FromEucJpPackedInPlace;
   603         method.iConversionData=&CnvJisX0212::ConversionData();
   606         method.iConversionData=&CnvJisX0212::ConversionData();
   604         method.iNumberOfBytesPerCharacter=3;
   607         method.iNumberOfBytesPerCharacter=3;
   605         method.iNumberOfCoreBytesPerCharacter=2;
   608         method.iNumberOfCoreBytesPerCharacter=2;
   606         methods.Append(method);
   609         ret |= methods.Append(method);
   607         }
   610         }
   608     else
   611     else
   609         {
   612         {
   610         CnvUtilities::SMethod method;
   613         CnvUtilities::SMethod method;
   611         method.iNumberOfBytesAbleToConvert=NumberOfBytesAbleToConvertToJisRoman;
   614         method.iNumberOfBytesAbleToConvert=NumberOfBytesAbleToConvertToJisRoman;
   612         method.iConvertToIntermediateBufferInPlace=DummyConvertToIntermediateBufferInPlace;
   615         method.iConvertToIntermediateBufferInPlace=DummyConvertToIntermediateBufferInPlace;
   613         method.iConversionData=&CnvJisRoman::ConversionData();
   616         method.iConversionData=&CnvJisRoman::ConversionData();
   614         method.iNumberOfBytesPerCharacter=1;
   617         method.iNumberOfBytesPerCharacter=1;
   615         method.iNumberOfCoreBytesPerCharacter=1;
   618         method.iNumberOfCoreBytesPerCharacter=1;
   616         methods.Append(method);
   619         ret |= methods.Append(method);
   617         method.iNumberOfBytesAbleToConvert=NumberOfBytesAbleToConvertToJisX0208;
   620         method.iNumberOfBytesAbleToConvert=NumberOfBytesAbleToConvertToJisX0208;
   618         method.iConvertToIntermediateBufferInPlace=ConvertToJisX0208FromEucJpPackedInPlace;
   621         method.iConvertToIntermediateBufferInPlace=ConvertToJisX0208FromEucJpPackedInPlace;
   619         method.iConversionData=&CnvJisX0208::ConversionData();
   622         method.iConversionData=&CnvJisX0208::ConversionData();
   620         method.iNumberOfBytesPerCharacter=2;
   623         method.iNumberOfBytesPerCharacter=2;
   621         method.iNumberOfCoreBytesPerCharacter=2;
   624         method.iNumberOfCoreBytesPerCharacter=2;
   622         methods.Append(method);
   625         ret |= methods.Append(method);
   623         method.iNumberOfBytesAbleToConvert=NumberOfBytesAbleToConvertToHalfWidthKatakana8;
   626         method.iNumberOfBytesAbleToConvert=NumberOfBytesAbleToConvertToHalfWidthKatakana8;
   624         method.iConvertToIntermediateBufferInPlace=ConvertToHalfWidthKatakana8FromEucJpPackedInPlace;
   627         method.iConvertToIntermediateBufferInPlace=ConvertToHalfWidthKatakana8FromEucJpPackedInPlace;
   625         method.iConversionData=&CnvHalfWidthKatakana8::ConversionData();
   628         method.iConversionData=&CnvHalfWidthKatakana8::ConversionData();
   626         method.iNumberOfBytesPerCharacter=2;
   629         method.iNumberOfBytesPerCharacter=2;
   627         method.iNumberOfCoreBytesPerCharacter=1;
   630         method.iNumberOfCoreBytesPerCharacter=1;
   628         methods.Append(method);
   631         ret |= methods.Append(method);
   629         method.iNumberOfBytesAbleToConvert=NumberOfBytesAbleToConvertToJisX0212;
   632         method.iNumberOfBytesAbleToConvert=NumberOfBytesAbleToConvertToJisX0212;
   630         method.iConvertToIntermediateBufferInPlace=ConvertToJisX0212FromEucJpPackedInPlace;
   633         method.iConvertToIntermediateBufferInPlace=ConvertToJisX0212FromEucJpPackedInPlace;
   631         method.iConversionData=&CnvJisX0212::ConversionData();
   634         method.iConversionData=&CnvJisX0212::ConversionData();
   632         method.iNumberOfBytesPerCharacter=3;
   635         method.iNumberOfBytesPerCharacter=3;
   633         method.iNumberOfCoreBytesPerCharacter=2;
   636         method.iNumberOfCoreBytesPerCharacter=2;
   634         methods.Append(method);
   637         ret |= methods.Append(method);
   635         }
   638         }
       
   639     __ASSERT_DEBUG(!ret, User::Panic(_L("RArray append failure"), ret));
   636     TInt unconvert = CnvUtilities::ConvertToUnicodeFromHeterogeneousForeign(aDefaultEndiannessOfForeignCharacters, aUnicode, aForeign, aNumberOfUnconvertibleCharacters, aIndexOfFirstByteOfFirstUnconvertibleCharacter, methods.Array());
   640     TInt unconvert = CnvUtilities::ConvertToUnicodeFromHeterogeneousForeign(aDefaultEndiannessOfForeignCharacters, aUnicode, aForeign, aNumberOfUnconvertibleCharacters, aIndexOfFirstByteOfFirstUnconvertibleCharacter, methods.Array());
   637 
   641 
   638     // The following is specific impelementation for brower.
   642     // The following is specific impelementation for brower.
   639     // If brower app calls this API, the yen sign code(0xA5)
   643     // If brower app calls this API, the yen sign code(0xA5)
   640     // must be converted to backslash code(0x5C).
   644     // must be converted to backslash code(0x5C).