418 // ----------------------------------------------------------------------------- |
418 // ----------------------------------------------------------------------------- |
419 // |
419 // |
420 |
420 |
421 LOCAL_C void FindAndModifyBuffer(TDes8& aModifyBuffer) |
421 LOCAL_C void FindAndModifyBuffer(TDes8& aModifyBuffer) |
422 { |
422 { |
423 TInt ret = KErrNone; |
423 RArray<TPtrC8> searchBuffer; |
424 RArray<TPtrC8> searchBuffer; |
|
425 RArray<TPtrC8> replaceBuffer; |
424 RArray<TPtrC8> replaceBuffer; |
426 |
425 |
427 //If the passed buffer contains the replacement buffer, |
426 //If the passed buffer contains the replacement buffer, |
428 //Then it should not get converted to respective Unicode |
427 //Then it should not get converted to respective Unicode |
429 //buffer rather it should get converted to replacement for |
428 //buffer rather it should get converted to replacement for |
430 //unconvertible character. |
429 //unconvertible character. |
431 |
430 |
432 ret |= searchBuffer.Append(KReplacementForExplicitHalant().Right(1)); |
431 searchBuffer.Append(KReplacementForExplicitHalant().Right(1)); |
433 ret |= searchBuffer.Append(KReplacementForSoftHalant().Right(1)); |
432 searchBuffer.Append(KReplacementForSoftHalant().Right(1)); |
434 ret |= searchBuffer.Append(KReplacementForOm().Right(1)); |
433 searchBuffer.Append(KReplacementForOm().Right(1)); |
435 ret |= searchBuffer.Append(KReplacementForAvagraha().Right(1)); |
434 searchBuffer.Append(KReplacementForAvagraha().Right(1)); |
436 |
435 |
437 ret |= searchBuffer.Append(KReplacementForVocalicRr().Right(1)); |
436 searchBuffer.Append(KReplacementForVocalicRr().Right(1)); |
438 ret |= searchBuffer.Append(KReplacementForVocalicLl().Right(1)); |
437 searchBuffer.Append(KReplacementForVocalicLl().Right(1)); |
439 ret |= searchBuffer.Append(KReplacementForVocalicLSign().Right(1)); |
438 searchBuffer.Append(KReplacementForVocalicLSign().Right(1)); |
440 ret |= searchBuffer.Append(KReplacementForVocalicLlSign().Right(1)); |
439 searchBuffer.Append(KReplacementForVocalicLlSign().Right(1)); |
441 ret |= searchBuffer.Append(KReplacementForVocalicL().Right(1)); |
440 searchBuffer.Append(KReplacementForVocalicL().Right(1)); |
442 ret |= searchBuffer.Append(KReplacementForVocalicRrSign().Right(1)); |
441 searchBuffer.Append(KReplacementForVocalicRrSign().Right(1)); |
443 |
442 |
444 //All normal search buffers |
443 //All normal search buffers |
445 ret |= searchBuffer.Append(KExplicitHalant().Mid(0)); |
444 searchBuffer.Append(KExplicitHalant().Mid(0)); |
446 ret |= searchBuffer.Append(KSoftHalant().Mid(0)); |
445 searchBuffer.Append(KSoftHalant().Mid(0)); |
447 ret |= searchBuffer.Append(KOm().Mid(0)); |
446 searchBuffer.Append(KOm().Mid(0)); |
448 ret |= searchBuffer.Append(KAvagraha().Mid(0)); |
447 searchBuffer.Append(KAvagraha().Mid(0)); |
449 |
448 |
450 ret |= searchBuffer.Append(KVocalicRr().Mid(0)); |
449 searchBuffer.Append(KVocalicRr().Mid(0)); |
451 ret |= searchBuffer.Append(KVocalicLl().Mid(0)); |
450 searchBuffer.Append(KVocalicLl().Mid(0)); |
452 ret |= searchBuffer.Append(KVocalicLSign().Mid(0)); |
451 searchBuffer.Append(KVocalicLSign().Mid(0)); |
453 ret |= searchBuffer.Append(KVocalicLlSign().Mid(0)); |
452 searchBuffer.Append(KVocalicLlSign().Mid(0)); |
454 ret |= searchBuffer.Append(KVocalicL().Mid(0)); |
453 searchBuffer.Append(KVocalicL().Mid(0)); |
455 ret |= searchBuffer.Append(KVocalicRrSign().Mid(0)); |
454 searchBuffer.Append(KVocalicRrSign().Mid(0)); |
456 |
455 |
457 //The replacement buffer for the odd cases to restrict the |
456 //The replacement buffer for the odd cases to restrict the |
458 //replacement buffers not to get converted to the corresponding |
457 //replacement buffers not to get converted to the corresponding |
459 //unicode buffer |
458 //unicode buffer |
460 |
459 |
461 ret |= replaceBuffer.Append(KIsciiUnconvertibleCharacter().Mid(0)); |
460 replaceBuffer.Append(KIsciiUnconvertibleCharacter().Mid(0)); |
462 ret |= replaceBuffer.Append(KIsciiUnconvertibleCharacter().Mid(0)); |
461 replaceBuffer.Append(KIsciiUnconvertibleCharacter().Mid(0)); |
463 ret |= replaceBuffer.Append(KIsciiUnconvertibleCharacter().Mid(0)); |
462 replaceBuffer.Append(KIsciiUnconvertibleCharacter().Mid(0)); |
464 ret |= replaceBuffer.Append(KIsciiUnconvertibleCharacter().Mid(0)); |
463 replaceBuffer.Append(KIsciiUnconvertibleCharacter().Mid(0)); |
465 |
464 |
466 ret |= replaceBuffer.Append(KIsciiUnconvertibleCharacter().Mid(0)); |
465 replaceBuffer.Append(KIsciiUnconvertibleCharacter().Mid(0)); |
467 ret |= replaceBuffer.Append(KIsciiUnconvertibleCharacter().Mid(0)); |
466 replaceBuffer.Append(KIsciiUnconvertibleCharacter().Mid(0)); |
468 ret |= replaceBuffer.Append(KIsciiUnconvertibleCharacter().Mid(0)); |
467 replaceBuffer.Append(KIsciiUnconvertibleCharacter().Mid(0)); |
469 ret |= replaceBuffer.Append(KIsciiUnconvertibleCharacter().Mid(0)); |
468 replaceBuffer.Append(KIsciiUnconvertibleCharacter().Mid(0)); |
470 ret |= replaceBuffer.Append(KIsciiUnconvertibleCharacter().Mid(0)); |
469 replaceBuffer.Append(KIsciiUnconvertibleCharacter().Mid(0)); |
471 ret |= replaceBuffer.Append(KIsciiUnconvertibleCharacter().Mid(0)); |
470 replaceBuffer.Append(KIsciiUnconvertibleCharacter().Mid(0)); |
472 |
471 |
473 //All normal replace buffers |
472 //All normal replace buffers |
474 ret |= replaceBuffer.Append(KReplacementForExplicitHalant().Mid(0)); |
473 replaceBuffer.Append(KReplacementForExplicitHalant().Mid(0)); |
475 ret |= replaceBuffer.Append(KReplacementForSoftHalant().Mid(0)); |
474 replaceBuffer.Append(KReplacementForSoftHalant().Mid(0)); |
476 ret |= replaceBuffer.Append(KReplacementForOm().Mid(0)); |
475 replaceBuffer.Append(KReplacementForOm().Mid(0)); |
477 ret |= replaceBuffer.Append(KReplacementForAvagraha().Mid(0)); |
476 replaceBuffer.Append(KReplacementForAvagraha().Mid(0)); |
478 |
477 |
479 |
478 |
480 ret |= replaceBuffer.Append(KReplacementForVocalicRr().Mid(0)); |
479 replaceBuffer.Append(KReplacementForVocalicRr().Mid(0)); |
481 ret |= replaceBuffer.Append(KReplacementForVocalicLl().Mid(0)); |
480 replaceBuffer.Append(KReplacementForVocalicLl().Mid(0)); |
482 ret |= replaceBuffer.Append(KReplacementForVocalicLSign().Mid(0)); |
481 replaceBuffer.Append(KReplacementForVocalicLSign().Mid(0)); |
483 ret |= replaceBuffer.Append(KReplacementForVocalicLlSign().Mid(0)); |
482 replaceBuffer.Append(KReplacementForVocalicLlSign().Mid(0)); |
484 ret |= replaceBuffer.Append(KReplacementForVocalicL().Mid(0)); |
483 replaceBuffer.Append(KReplacementForVocalicL().Mid(0)); |
485 ret |= replaceBuffer.Append(KReplacementForVocalicRrSign().Mid(0)); |
484 replaceBuffer.Append(KReplacementForVocalicRrSign().Mid(0)); |
486 |
485 |
487 __ASSERT_DEBUG(!ret, User::Panic(_L("RArray append failure"), ret)); |
|
488 |
486 |
489 for(TInt counter=0;counter<searchBuffer.Count();counter++) |
487 for(TInt counter=0;counter<searchBuffer.Count();counter++) |
490 { |
488 { |
491 DoFindAndModifyBuffer(aModifyBuffer,searchBuffer[counter],replaceBuffer[counter]); |
489 DoFindAndModifyBuffer(aModifyBuffer,searchBuffer[counter],replaceBuffer[counter]); |
492 } |
490 } |
552 // ----------------------------------------------------------------------------- |
550 // ----------------------------------------------------------------------------- |
553 // |
551 // |
554 |
552 |
555 LOCAL_C void NormalizeReturnValue(TUint& aReturnValue,const TDesC8& aBuffer) |
553 LOCAL_C void NormalizeReturnValue(TUint& aReturnValue,const TDesC8& aBuffer) |
556 { |
554 { |
557 TInt ret = KErrNone; |
555 RArray<TPtrC8> searchBuffer; |
558 RArray<TPtrC8> searchBuffer; |
|
559 RArray<TPtrC8> replaceBuffer; |
556 RArray<TPtrC8> replaceBuffer; |
560 |
557 |
561 ret |= searchBuffer.Append(KExplicitHalant().Mid(0)); |
558 searchBuffer.Append(KExplicitHalant().Mid(0)); |
562 ret |= searchBuffer.Append(KSoftHalant().Mid(0)); |
559 searchBuffer.Append(KSoftHalant().Mid(0)); |
563 ret |= searchBuffer.Append(KOm().Mid(0)); |
560 searchBuffer.Append(KOm().Mid(0)); |
564 ret |= searchBuffer.Append(KAvagraha().Mid(0)); |
561 searchBuffer.Append(KAvagraha().Mid(0)); |
565 |
562 |
566 ret |= searchBuffer.Append(KVocalicRr().Mid(0)); |
563 searchBuffer.Append(KVocalicRr().Mid(0)); |
567 ret |= searchBuffer.Append(KVocalicLl().Mid(0)); |
564 searchBuffer.Append(KVocalicLl().Mid(0)); |
568 ret |= searchBuffer.Append(KVocalicLSign().Mid(0)); |
565 searchBuffer.Append(KVocalicLSign().Mid(0)); |
569 ret |= searchBuffer.Append(KVocalicLlSign().Mid(0)); |
566 searchBuffer.Append(KVocalicLlSign().Mid(0)); |
570 ret |= searchBuffer.Append(KVocalicL().Mid(0)); |
567 searchBuffer.Append(KVocalicL().Mid(0)); |
571 ret |= searchBuffer.Append(KVocalicRrSign().Mid(0)); |
568 searchBuffer.Append(KVocalicRrSign().Mid(0)); |
572 |
569 |
573 ret |= replaceBuffer.Append(KReplacementForExplicitHalant().Mid(0)); |
570 replaceBuffer.Append(KReplacementForExplicitHalant().Mid(0)); |
574 ret |= replaceBuffer.Append(KReplacementForSoftHalant().Mid(0)); |
571 replaceBuffer.Append(KReplacementForSoftHalant().Mid(0)); |
575 ret |= replaceBuffer.Append(KReplacementForOm().Mid(0)); |
572 replaceBuffer.Append(KReplacementForOm().Mid(0)); |
576 ret |= replaceBuffer.Append(KReplacementForAvagraha().Mid(0)); |
573 replaceBuffer.Append(KReplacementForAvagraha().Mid(0)); |
577 |
574 |
578 ret |= replaceBuffer.Append(KReplacementForVocalicRr().Mid(0)); |
575 replaceBuffer.Append(KReplacementForVocalicRr().Mid(0)); |
579 ret |= replaceBuffer.Append(KReplacementForVocalicLl().Mid(0)); |
576 replaceBuffer.Append(KReplacementForVocalicLl().Mid(0)); |
580 ret |= replaceBuffer.Append(KReplacementForVocalicLSign().Mid(0)); |
577 replaceBuffer.Append(KReplacementForVocalicLSign().Mid(0)); |
581 ret |= replaceBuffer.Append(KReplacementForVocalicLlSign().Mid(0)); |
578 replaceBuffer.Append(KReplacementForVocalicLlSign().Mid(0)); |
582 ret |= replaceBuffer.Append(KReplacementForVocalicL().Mid(0)); |
579 replaceBuffer.Append(KReplacementForVocalicL().Mid(0)); |
583 ret |= replaceBuffer.Append(KReplacementForVocalicRrSign().Mid(0)); |
580 replaceBuffer.Append(KReplacementForVocalicRrSign().Mid(0)); |
584 |
|
585 __ASSERT_DEBUG(!ret, User::Panic(_L("RArray append failure"), ret)); |
|
586 |
581 |
587 DoNormalizeReturnValue(aReturnValue,aBuffer,searchBuffer,replaceBuffer); |
582 DoNormalizeReturnValue(aReturnValue,aBuffer,searchBuffer,replaceBuffer); |
588 searchBuffer.Reset(); |
583 searchBuffer.Reset(); |
589 replaceBuffer.Reset(); |
584 replaceBuffer.Reset(); |
590 } |
585 } |
686 RArray<TPtrC8> searchBuffer; |
681 RArray<TPtrC8> searchBuffer; |
687 if(anIsciiBuffer.Length () == 0) |
682 if(anIsciiBuffer.Length () == 0) |
688 return EFalse; |
683 return EFalse; |
689 if(anIsciiBuffer[anIsciiBuffer.Length()-1] == 0xEF) |
684 if(anIsciiBuffer[anIsciiBuffer.Length()-1] == 0xEF) |
690 return ETrue; |
685 return ETrue; |
691 |
686 searchBuffer.Append(KSoftHalant().Mid(0)); |
692 TInt appendret = KErrNone; |
687 searchBuffer.Append(KOm().Mid(0)); |
693 appendret |= searchBuffer.Append(KSoftHalant().Mid(0)); |
688 searchBuffer.Append(KAvagraha().Mid(0)); |
694 appendret |= searchBuffer.Append(KOm().Mid(0)); |
689 searchBuffer.Append(KExplicitHalant().Mid(0)); |
695 appendret |= searchBuffer.Append(KAvagraha().Mid(0)); |
|
696 appendret |= searchBuffer.Append(KExplicitHalant().Mid(0)); |
|
697 __ASSERT_DEBUG(!appendret, User::Panic(_L("RArray append failure"), appendret)); |
|
698 |
|
699 TBool ret = EFalse; |
690 TBool ret = EFalse; |
700 TBool isNotTruncated =EFalse; |
691 TBool isNotTruncated =EFalse; |
701 |
692 |
702 //First check if the intermediate iscii buffer is ending with a complete multi byte sequence. |
693 //First check if the intermediate iscii buffer is ending with a complete multi byte sequence. |
703 //If it ends with a complete multi byte sequence, no need to check if the last character of |
694 //If it ends with a complete multi byte sequence, no need to check if the last character of |
1202 LOCAL_C void FindAndModifyBuffer(TDes8& aModifyBuffer) |
1193 LOCAL_C void FindAndModifyBuffer(TDes8& aModifyBuffer) |
1203 { |
1194 { |
1204 RArray<TPtrC8> searchBuffer; |
1195 RArray<TPtrC8> searchBuffer; |
1205 RArray<TPtrC8> replaceBuffer; |
1196 RArray<TPtrC8> replaceBuffer; |
1206 |
1197 |
1207 TInt ret = KErrNone; |
1198 searchBuffer.Append(KExplicitHalant().Mid(0)); |
1208 ret |= searchBuffer.Append(KExplicitHalant().Mid(0)); |
1199 searchBuffer.Append(KSoftHalant().Mid(0)); |
1209 ret |= searchBuffer.Append(KSoftHalant().Mid(0)); |
1200 searchBuffer.Append(KOm().Mid(0)); |
1210 ret |= searchBuffer.Append(KOm().Mid(0)); |
1201 searchBuffer.Append(KAvagraha().Mid(0)); |
1211 ret |= searchBuffer.Append(KAvagraha().Mid(0)); |
1202 |
1212 |
1203 replaceBuffer.Append(KReplacementForExplicitHalant().Mid(0)); |
1213 ret |= replaceBuffer.Append(KReplacementForExplicitHalant().Mid(0)); |
1204 replaceBuffer.Append(KReplacementForSoftHalant().Mid(0)); |
1214 ret |= replaceBuffer.Append(KReplacementForSoftHalant().Mid(0)); |
1205 replaceBuffer.Append(KReplacementForOm().Mid(0)); |
1215 ret |= replaceBuffer.Append(KReplacementForOm().Mid(0)); |
1206 replaceBuffer.Append(KReplacementForAvagraha().Mid(0)); |
1216 ret |= replaceBuffer.Append(KReplacementForAvagraha().Mid(0)); |
|
1217 |
|
1218 __ASSERT_DEBUG(!ret, User::Panic(_L("RArray append failure"), ret)); |
|
1219 |
1207 |
1220 for(TInt counter=0;counter<searchBuffer.Count();counter++) |
1208 for(TInt counter=0;counter<searchBuffer.Count();counter++) |
1221 { |
1209 { |
1222 DoFindAndModifyBuffer(aModifyBuffer,searchBuffer[counter],replaceBuffer[counter]); |
1210 DoFindAndModifyBuffer(aModifyBuffer,searchBuffer[counter],replaceBuffer[counter]); |
1223 } |
1211 } |
1285 |
1273 |
1286 LOCAL_C void NormalizeReturnValue(TUint& aReturnValue,const TDesC8& aBuffer) |
1274 LOCAL_C void NormalizeReturnValue(TUint& aReturnValue,const TDesC8& aBuffer) |
1287 { |
1275 { |
1288 RArray<TPtrC8> searchBuffer; |
1276 RArray<TPtrC8> searchBuffer; |
1289 RArray<TPtrC8> replaceBuffer; |
1277 RArray<TPtrC8> replaceBuffer; |
1290 TInt ret =KErrNone; |
1278 |
1291 ret |= searchBuffer.Append(KExplicitHalant().Mid(0)); |
1279 searchBuffer.Append(KExplicitHalant().Mid(0)); |
1292 ret |= searchBuffer.Append(KSoftHalant().Mid(0)); |
1280 searchBuffer.Append(KSoftHalant().Mid(0)); |
1293 ret |= searchBuffer.Append(KOm().Mid(0)); |
1281 searchBuffer.Append(KOm().Mid(0)); |
1294 ret |= searchBuffer.Append(KAvagraha().Mid(0)); |
1282 searchBuffer.Append(KAvagraha().Mid(0)); |
1295 |
1283 |
1296 ret |= replaceBuffer.Append(KReplacementForExplicitHalant().Mid(0)); |
1284 replaceBuffer.Append(KReplacementForExplicitHalant().Mid(0)); |
1297 ret |= replaceBuffer.Append(KReplacementForSoftHalant().Mid(0)); |
1285 replaceBuffer.Append(KReplacementForSoftHalant().Mid(0)); |
1298 ret |= replaceBuffer.Append(KReplacementForOm().Mid(0)); |
1286 replaceBuffer.Append(KReplacementForOm().Mid(0)); |
1299 ret |= replaceBuffer.Append(KReplacementForAvagraha().Mid(0)); |
1287 replaceBuffer.Append(KReplacementForAvagraha().Mid(0)); |
1300 |
|
1301 __ASSERT_DEBUG(!ret, User::Panic(_L("RArray append failure"), ret)); |
|
1302 |
|
1303 DoNormalizeReturnValue(aReturnValue,aBuffer,searchBuffer,replaceBuffer); |
1288 DoNormalizeReturnValue(aReturnValue,aBuffer,searchBuffer,replaceBuffer); |
1304 searchBuffer.Reset(); |
1289 searchBuffer.Reset(); |
1305 replaceBuffer.Reset(); |
1290 replaceBuffer.Reset(); |
1306 } |
1291 } |
1307 |
1292 |
1402 RArray<TPtrC8> searchBuffer; |
1387 RArray<TPtrC8> searchBuffer; |
1403 if(anIsciiBuffer.Length () == 0) |
1388 if(anIsciiBuffer.Length () == 0) |
1404 return EFalse; |
1389 return EFalse; |
1405 if(anIsciiBuffer[anIsciiBuffer.Length()-1] == 0xEF) |
1390 if(anIsciiBuffer[anIsciiBuffer.Length()-1] == 0xEF) |
1406 return ETrue; |
1391 return ETrue; |
1407 |
1392 searchBuffer.Append(KSoftHalant().Mid(0)); |
1408 TInt appendret = KErrNone; |
1393 searchBuffer.Append(KOm().Mid(0)); |
1409 appendret |= searchBuffer.Append(KSoftHalant().Mid(0)); |
1394 searchBuffer.Append(KAvagraha().Mid(0)); |
1410 appendret |= searchBuffer.Append(KOm().Mid(0)); |
1395 searchBuffer.Append(KExplicitHalant().Mid(0)); |
1411 appendret |= searchBuffer.Append(KAvagraha().Mid(0)); |
|
1412 appendret |= searchBuffer.Append(KExplicitHalant().Mid(0)); |
|
1413 __ASSERT_DEBUG(!ret, User::Panic(_L("RArray append failure"), ret)); |
|
1414 |
|
1415 TBool ret = EFalse; |
1396 TBool ret = EFalse; |
1416 TBool isNotTruncated =EFalse; |
1397 TBool isNotTruncated =EFalse; |
1417 |
1398 |
1418 //First check if the intermediate iscii buffer is ending with a complete multi byte sequence. |
1399 //First check if the intermediate iscii buffer is ending with a complete multi byte sequence. |
1419 //If it ends with a complete multi byte sequence, no need to check if the last character of |
1400 //If it ends with a complete multi byte sequence, no need to check if the last character of |