charconvfw/charconvplugins/src/shared/JISBASE_SHARED_2.CPP
changeset 44 601ab138ba0b
parent 37 6be019398652
equal deleted inserted replaced
37:6be019398652 44:601ab138ba0b
   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;
   164     TBool pictographsSupported = FeatureManager::FeatureSupported(KFeatureIdJapanesePicto);
   165     TBool pictographsSupported = FeatureManager::FeatureSupported(KFeatureIdJapanesePicto);
   165     RArray<CnvUtilities::SState> states;
   166     RArray<CnvUtilities::SState> states;
   166     if ( pictographsSupported )
   167     if ( pictographsSupported )
   167         {        
   168         {        
   168 
   169 
   169         CnvUtilities::SState state;
   170         CnvUtilities::SState state;
   170         state.iEscapeSequence=&KLit8EscapeSequenceForJisRoman; // Jis-Roman is the default state, so it must come first in the array
   171         state.iEscapeSequence=&KLit8EscapeSequenceForJisRoman; // Jis-Roman is the default state, so it must come first in the array
   171         state.iConversionData=&CnvJisRoman::ConversionData();
   172         state.iConversionData=&CnvJisRoman::ConversionData();
   172         states.Append(state);
   173         ret |= states.Append(state);
   173         state.iEscapeSequence=&KLit8EscapeSequenceForJisRomanIncorrect;
   174         state.iEscapeSequence=&KLit8EscapeSequenceForJisRomanIncorrect;
   174         state.iConversionData=&CnvJisRoman::ConversionData();
   175         state.iConversionData=&CnvJisRoman::ConversionData();
   175         states.Append(state);
   176         ret |= states.Append(state);
   176         state.iEscapeSequence=&KLit8EscapeSequenceForAscii;
   177         state.iEscapeSequence=&KLit8EscapeSequenceForAscii;
   177         state.iConversionData=&CCnvCharacterSetConverter::AsciiConversionData();
   178         state.iConversionData=&CCnvCharacterSetConverter::AsciiConversionData();
   178         states.Append(state);
   179         ret |= states.Append(state);
   179     
   180     
   180         SetStatesForPictograph(states);
   181         SetStatesForPictograph(states);
   181 
   182 
   182         state.iEscapeSequence=&KLit8EscapeSequenceForHalfWidthKatakana;
   183         state.iEscapeSequence=&KLit8EscapeSequenceForHalfWidthKatakana;
   183         state.iConversionData=&halfWidthKatakana7ConversionData;
   184         state.iConversionData=&halfWidthKatakana7ConversionData;
   184         states.Append(state);
   185         ret |= states.Append(state);
   185         state.iEscapeSequence=&KLit8EscapeSequenceForJisC6226_1978;
   186         state.iEscapeSequence=&KLit8EscapeSequenceForJisC6226_1978;
   186         state.iConversionData=&CnvJisX0208::ConversionData();
   187         state.iConversionData=&CnvJisX0208::ConversionData();
   187         states.Append(state);
   188         ret |= states.Append(state);
   188         state.iEscapeSequence=&KLit8EscapeSequenceForJisX0208_1983;
   189         state.iEscapeSequence=&KLit8EscapeSequenceForJisX0208_1983;
   189         state.iConversionData=&CnvJisX0208::ConversionData();
   190         state.iConversionData=&CnvJisX0208::ConversionData();
   190         states.Append(state);
   191         ret |= states.Append(state);
   191         state.iEscapeSequence=&KLit8EscapeSequenceForJisX0208_199x;
   192         state.iEscapeSequence=&KLit8EscapeSequenceForJisX0208_199x;
   192         state.iConversionData=&CnvJisX0208::ConversionData();
   193         state.iConversionData=&CnvJisX0208::ConversionData();
   193         states.Append(state);
   194         ret |= states.Append(state);
   194         state.iEscapeSequence=&KLit8EscapeSequenceForJisX0212_1990;
   195         state.iEscapeSequence=&KLit8EscapeSequenceForJisX0212_1990;
   195         state.iConversionData=&CnvJisX0212::ConversionData();
   196         state.iConversionData=&CnvJisX0212::ConversionData();
   196         states.Append(state);
   197         ret |= states.Append(state);
   197         }
   198         }
   198     else
   199     else
   199         {            
   200         {            
   200         CnvUtilities::SState state;
   201         CnvUtilities::SState state;
   201     	state.iEscapeSequence=&KLit8EscapeSequenceForJisRoman; // Jis-Roman is the default state, so it must come first in the array
   202     	state.iEscapeSequence=&KLit8EscapeSequenceForJisRoman; // Jis-Roman is the default state, so it must come first in the array
   202     	state.iConversionData=&CnvJisRoman::ConversionData();
   203     	state.iConversionData=&CnvJisRoman::ConversionData();
   203         states.Append(state);
   204     	ret |= states.Append(state);
   204         state.iEscapeSequence=&KLit8EscapeSequenceForJisRomanIncorrect;
   205         state.iEscapeSequence=&KLit8EscapeSequenceForJisRomanIncorrect;
   205     	state.iConversionData=&CnvJisRoman::ConversionData();	
   206     	state.iConversionData=&CnvJisRoman::ConversionData();	
   206         states.Append(state);
   207     	ret |= states.Append(state);
   207     	state.iEscapeSequence=&KLit8EscapeSequenceForAscii;
   208     	state.iEscapeSequence=&KLit8EscapeSequenceForAscii;
   208     	state.iConversionData=&CCnvCharacterSetConverter::AsciiConversionData();
   209     	state.iConversionData=&CCnvCharacterSetConverter::AsciiConversionData();
   209         states.Append(state);
   210     	ret |= states.Append(state);
   210     	state.iEscapeSequence=&KLit8EscapeSequenceForHalfWidthKatakana;
   211     	state.iEscapeSequence=&KLit8EscapeSequenceForHalfWidthKatakana;
   211     	state.iConversionData=&halfWidthKatakana7ConversionData;
   212     	state.iConversionData=&halfWidthKatakana7ConversionData;
   212         states.Append(state);
   213     	ret |= states.Append(state);
   213     	state.iEscapeSequence=&KLit8EscapeSequenceForJisC6226_1978;
   214     	state.iEscapeSequence=&KLit8EscapeSequenceForJisC6226_1978;
   214     	state.iConversionData=&CnvJisX0208::ConversionData();
   215     	state.iConversionData=&CnvJisX0208::ConversionData();
   215         states.Append(state);
   216     	ret |= states.Append(state);
   216     	state.iEscapeSequence=&KLit8EscapeSequenceForJisX0208_1983;
   217     	state.iEscapeSequence=&KLit8EscapeSequenceForJisX0208_1983;
   217     	state.iConversionData=&CnvJisX0208::ConversionData();
   218     	state.iConversionData=&CnvJisX0208::ConversionData();
   218         states.Append(state);
   219     	ret |= states.Append(state);
   219     	state.iEscapeSequence=&KLit8EscapeSequenceForJisX0208_199x;
   220     	state.iEscapeSequence=&KLit8EscapeSequenceForJisX0208_199x;
   220     	state.iConversionData=&CnvJisX0208::ConversionData();
   221     	state.iConversionData=&CnvJisX0208::ConversionData();
   221         states.Append(state);
   222     	ret |= states.Append(state);
   222     	state.iEscapeSequence=&KLit8EscapeSequenceForJisX0212_1990;
   223     	state.iEscapeSequence=&KLit8EscapeSequenceForJisX0212_1990;
   223     	state.iConversionData=&CnvJisX0212::ConversionData();
   224     	state.iConversionData=&CnvJisX0212::ConversionData();
   224         states.Append(state);
   225     	ret |= states.Append(state);
   225         }
   226         }
       
   227     __ASSERT_DEBUG(!ret, User::Panic(_L("RArray append failure"), ret));
       
   228     
   226 	const TArray<CnvUtilities::SState> arrayOfStates(states.Array());
   229 	const TArray<CnvUtilities::SState> arrayOfStates(states.Array());
   227 	aUnicode.SetLength(0);
   230 	aUnicode.SetLength(0);
   228 	const TUint8* const pointerToFirstByte=aForeign.Ptr();
   231 	const TUint8* const pointerToFirstByte=aForeign.Ptr();
   229 	const TUint8* pointerToCurrentByte=pointerToFirstByte;
   232 	const TUint8* pointerToCurrentByte=pointerToFirstByte;
   230 	const TUint8* pointerToStartOfNextRunToConvert=pointerToFirstByte;
   233 	const TUint8* pointerToStartOfNextRunToConvert=pointerToFirstByte;