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; |