charconvfw/charconvplugins/src/shared/JISBASE_SHARED_2.CPP
branchRCL_3
changeset 55 336bee5c2d35
parent 54 748ec5531811
equal deleted inserted replaced
54:748ec5531811 55:336bee5c2d35
   159 	return CCnvCharacterSetConverter::DoConvertToUnicode(CnvHalfWidthKatakana8::ConversionData(), aDefaultEndiannessOfForeignCharacters, aUnicode, aJis8, aNumberOfUnconvertibleCharacters, aIndexOfFirstByteOfFirstUnconvertibleCharacter, aOutputConversionFlags, aInputConversionFlags);
   159 	return CCnvCharacterSetConverter::DoConvertToUnicode(CnvHalfWidthKatakana8::ConversionData(), aDefaultEndiannessOfForeignCharacters, aUnicode, aJis8, aNumberOfUnconvertibleCharacters, aIndexOfFirstByteOfFirstUnconvertibleCharacter, aOutputConversionFlags, aInputConversionFlags);
   160 	}
   160 	}
   161 
   161 
   162 EXPORT_C TInt CnvJisBase::ConvertToUnicode(CCnvCharacterSetConverter::TEndianness aDefaultEndiannessOfForeignCharacters, TDes16& aUnicode, const TDesC8& aForeign, TInt& aState, TInt& aNumberOfUnconvertibleCharacters, TInt& aIndexOfFirstByteOfFirstUnconvertibleCharacter)
   162 EXPORT_C TInt CnvJisBase::ConvertToUnicode(CCnvCharacterSetConverter::TEndianness aDefaultEndiannessOfForeignCharacters, TDes16& aUnicode, const TDesC8& aForeign, TInt& aState, TInt& aNumberOfUnconvertibleCharacters, TInt& aIndexOfFirstByteOfFirstUnconvertibleCharacter)
   163 	{
   163 	{
   164     TInt ret =KErrNone;
       
   165     TBool pictographsSupported = FeatureManager::FeatureSupported(KFeatureIdJapanesePicto);
   164     TBool pictographsSupported = FeatureManager::FeatureSupported(KFeatureIdJapanesePicto);
   166     RArray<CnvUtilities::SState> states;
   165     RArray<CnvUtilities::SState> states;
   167     if ( pictographsSupported )
   166     if ( pictographsSupported )
   168         {        
   167         {        
   169 
   168 
   170         CnvUtilities::SState state;
   169         CnvUtilities::SState state;
   171         state.iEscapeSequence=&KLit8EscapeSequenceForJisRoman; // Jis-Roman is the default state, so it must come first in the array
   170         state.iEscapeSequence=&KLit8EscapeSequenceForJisRoman; // Jis-Roman is the default state, so it must come first in the array
   172         state.iConversionData=&CnvJisRoman::ConversionData();
   171         state.iConversionData=&CnvJisRoman::ConversionData();
   173         ret |= states.Append(state);
   172         states.Append(state);
   174         state.iEscapeSequence=&KLit8EscapeSequenceForJisRomanIncorrect;
   173         state.iEscapeSequence=&KLit8EscapeSequenceForJisRomanIncorrect;
   175         state.iConversionData=&CnvJisRoman::ConversionData();
   174         state.iConversionData=&CnvJisRoman::ConversionData();
   176         ret |= states.Append(state);
   175         states.Append(state);
   177         state.iEscapeSequence=&KLit8EscapeSequenceForAscii;
   176         state.iEscapeSequence=&KLit8EscapeSequenceForAscii;
   178         state.iConversionData=&CCnvCharacterSetConverter::AsciiConversionData();
   177         state.iConversionData=&CCnvCharacterSetConverter::AsciiConversionData();
   179         ret |= states.Append(state);
   178         states.Append(state);
   180     
   179     
   181         SetStatesForPictograph(states);
   180         SetStatesForPictograph(states);
   182 
   181 
   183         state.iEscapeSequence=&KLit8EscapeSequenceForHalfWidthKatakana;
   182         state.iEscapeSequence=&KLit8EscapeSequenceForHalfWidthKatakana;
   184         state.iConversionData=&halfWidthKatakana7ConversionData;
   183         state.iConversionData=&halfWidthKatakana7ConversionData;
   185         ret |= states.Append(state);
   184         states.Append(state);
   186         state.iEscapeSequence=&KLit8EscapeSequenceForJisC6226_1978;
   185         state.iEscapeSequence=&KLit8EscapeSequenceForJisC6226_1978;
   187         state.iConversionData=&CnvJisX0208::ConversionData();
   186         state.iConversionData=&CnvJisX0208::ConversionData();
   188         ret |= states.Append(state);
   187         states.Append(state);
   189         state.iEscapeSequence=&KLit8EscapeSequenceForJisX0208_1983;
   188         state.iEscapeSequence=&KLit8EscapeSequenceForJisX0208_1983;
   190         state.iConversionData=&CnvJisX0208::ConversionData();
   189         state.iConversionData=&CnvJisX0208::ConversionData();
   191         ret |= states.Append(state);
   190         states.Append(state);
   192         state.iEscapeSequence=&KLit8EscapeSequenceForJisX0208_199x;
   191         state.iEscapeSequence=&KLit8EscapeSequenceForJisX0208_199x;
   193         state.iConversionData=&CnvJisX0208::ConversionData();
   192         state.iConversionData=&CnvJisX0208::ConversionData();
   194         ret |= states.Append(state);
   193         states.Append(state);
   195         state.iEscapeSequence=&KLit8EscapeSequenceForJisX0212_1990;
   194         state.iEscapeSequence=&KLit8EscapeSequenceForJisX0212_1990;
   196         state.iConversionData=&CnvJisX0212::ConversionData();
   195         state.iConversionData=&CnvJisX0212::ConversionData();
   197         ret |= states.Append(state);
   196         states.Append(state);
   198         }
   197         }
   199     else
   198     else
   200         {            
   199         {            
   201         CnvUtilities::SState state;
   200         CnvUtilities::SState state;
   202     	state.iEscapeSequence=&KLit8EscapeSequenceForJisRoman; // Jis-Roman is the default state, so it must come first in the array
   201     	state.iEscapeSequence=&KLit8EscapeSequenceForJisRoman; // Jis-Roman is the default state, so it must come first in the array
   203     	state.iConversionData=&CnvJisRoman::ConversionData();
   202     	state.iConversionData=&CnvJisRoman::ConversionData();
   204     	ret |= states.Append(state);
   203         states.Append(state);
   205         state.iEscapeSequence=&KLit8EscapeSequenceForJisRomanIncorrect;
   204         state.iEscapeSequence=&KLit8EscapeSequenceForJisRomanIncorrect;
   206     	state.iConversionData=&CnvJisRoman::ConversionData();	
   205     	state.iConversionData=&CnvJisRoman::ConversionData();	
   207     	ret |= states.Append(state);
   206         states.Append(state);
   208     	state.iEscapeSequence=&KLit8EscapeSequenceForAscii;
   207     	state.iEscapeSequence=&KLit8EscapeSequenceForAscii;
   209     	state.iConversionData=&CCnvCharacterSetConverter::AsciiConversionData();
   208     	state.iConversionData=&CCnvCharacterSetConverter::AsciiConversionData();
   210     	ret |= states.Append(state);
   209         states.Append(state);
   211     	state.iEscapeSequence=&KLit8EscapeSequenceForHalfWidthKatakana;
   210     	state.iEscapeSequence=&KLit8EscapeSequenceForHalfWidthKatakana;
   212     	state.iConversionData=&halfWidthKatakana7ConversionData;
   211     	state.iConversionData=&halfWidthKatakana7ConversionData;
   213     	ret |= states.Append(state);
   212         states.Append(state);
   214     	state.iEscapeSequence=&KLit8EscapeSequenceForJisC6226_1978;
   213     	state.iEscapeSequence=&KLit8EscapeSequenceForJisC6226_1978;
   215     	state.iConversionData=&CnvJisX0208::ConversionData();
   214     	state.iConversionData=&CnvJisX0208::ConversionData();
   216     	ret |= states.Append(state);
   215         states.Append(state);
   217     	state.iEscapeSequence=&KLit8EscapeSequenceForJisX0208_1983;
   216     	state.iEscapeSequence=&KLit8EscapeSequenceForJisX0208_1983;
   218     	state.iConversionData=&CnvJisX0208::ConversionData();
   217     	state.iConversionData=&CnvJisX0208::ConversionData();
   219     	ret |= states.Append(state);
   218         states.Append(state);
   220     	state.iEscapeSequence=&KLit8EscapeSequenceForJisX0208_199x;
   219     	state.iEscapeSequence=&KLit8EscapeSequenceForJisX0208_199x;
   221     	state.iConversionData=&CnvJisX0208::ConversionData();
   220     	state.iConversionData=&CnvJisX0208::ConversionData();
   222     	ret |= states.Append(state);
   221         states.Append(state);
   223     	state.iEscapeSequence=&KLit8EscapeSequenceForJisX0212_1990;
   222     	state.iEscapeSequence=&KLit8EscapeSequenceForJisX0212_1990;
   224     	state.iConversionData=&CnvJisX0212::ConversionData();
   223     	state.iConversionData=&CnvJisX0212::ConversionData();
   225     	ret |= states.Append(state);
   224         states.Append(state);
   226         }
   225         }
   227     __ASSERT_DEBUG(!ret, User::Panic(_L("RArray append failure"), ret));
       
   228     
       
   229 	const TArray<CnvUtilities::SState> arrayOfStates(states.Array());
   226 	const TArray<CnvUtilities::SState> arrayOfStates(states.Array());
   230 	aUnicode.SetLength(0);
   227 	aUnicode.SetLength(0);
   231 	const TUint8* const pointerToFirstByte=aForeign.Ptr();
   228 	const TUint8* const pointerToFirstByte=aForeign.Ptr();
   232 	const TUint8* pointerToCurrentByte=pointerToFirstByte;
   229 	const TUint8* pointerToCurrentByte=pointerToFirstByte;
   233 	const TUint8* pointerToStartOfNextRunToConvert=pointerToFirstByte;
   230 	const TUint8* pointerToStartOfNextRunToConvert=pointerToFirstByte;
   314 				TInt indexOfFirstByteOfFirstUnconvertibleCharacter;
   311 				TInt indexOfFirstByteOfFirstUnconvertibleCharacter;
   315 				__ASSERT_DEBUG(appendConvertToUnicode!=NULL, Panic(EPanicBadFunctionPointer));
   312 				__ASSERT_DEBUG(appendConvertToUnicode!=NULL, Panic(EPanicBadFunctionPointer));
   316 				const TInt returnValue=(*appendConvertToUnicode)(aDefaultEndiannessOfForeignCharacters, aUnicode, runToConvert, aState, numberOfUnconvertibleCharacters, indexOfFirstByteOfFirstUnconvertibleCharacter, arrayOfStates, outputConversionFlags, inputConversionFlags);
   313 				const TInt returnValue=(*appendConvertToUnicode)(aDefaultEndiannessOfForeignCharacters, aUnicode, runToConvert, aState, numberOfUnconvertibleCharacters, indexOfFirstByteOfFirstUnconvertibleCharacter, arrayOfStates, outputConversionFlags, inputConversionFlags);
   317 				if (returnValue<0)
   314 				if (returnValue<0)
   318 					{
   315 					{
   319                     states.Close();
       
   320 					return returnValue; // this is an error-code
   316 					return returnValue; // this is an error-code
   321 					}
   317 					}
   322 				if (numberOfUnconvertibleCharacters>0)
   318 				if (numberOfUnconvertibleCharacters>0)
   323 					{
   319 					{
   324 					if (aNumberOfUnconvertibleCharacters==0)
   320 					if (aNumberOfUnconvertibleCharacters==0)