diff options
author | Rüdiger Timm <rt@openoffice.org> | 2003-04-08 15:02:43 +0000 |
---|---|---|
committer | Rüdiger Timm <rt@openoffice.org> | 2003-04-08 15:02:43 +0000 |
commit | 636309ada3820ea30a0a9b37ab4ec0f8d823504e (patch) | |
tree | 870143146bbf8e56e56399a9755ec76c8645289c /i18npool/source/transliteration/ignoreIandEfollowedByYa_ja_JP.cxx | |
parent | 62ec3ae5cfb147b7ab7c0ef184d20142674a3db6 (diff) |
INTEGRATION: CWS calc06 (1.2.42); FILE MERGED
2003/03/21 22:08:08 khong 1.2.42.1: #106680# Implementing new XExtendedTransliteration interface
Diffstat (limited to 'i18npool/source/transliteration/ignoreIandEfollowedByYa_ja_JP.cxx')
-rw-r--r-- | i18npool/source/transliteration/ignoreIandEfollowedByYa_ja_JP.cxx | 173 |
1 files changed, 89 insertions, 84 deletions
diff --git a/i18npool/source/transliteration/ignoreIandEfollowedByYa_ja_JP.cxx b/i18npool/source/transliteration/ignoreIandEfollowedByYa_ja_JP.cxx index e99b9d826970..64d21c232d1f 100644 --- a/i18npool/source/transliteration/ignoreIandEfollowedByYa_ja_JP.cxx +++ b/i18npool/source/transliteration/ignoreIandEfollowedByYa_ja_JP.cxx @@ -2,9 +2,9 @@ * * $RCSfile: ignoreIandEfollowedByYa_ja_JP.cxx,v $ * - * $Revision: 1.4 $ + * $Revision: 1.5 $ * - * last change: $Author: hr $ $Date: 2003-03-26 10:54:46 $ + * last change: $Author: rt $ $Date: 2003-04-08 16:02:21 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -73,39 +73,39 @@ using namespace rtl; namespace com { namespace sun { namespace star { namespace i18n { OneToOneMappingTable_t IandE[] = { - MAKE_PAIR( 0x30A3, 0x0000 ), // KATAKANA LETTER SMALL I - MAKE_PAIR( 0x30A4, 0x0000 ), // KATAKANA LETTER I - MAKE_PAIR( 0x30A7, 0x0000 ), // KATAKANA LETTER SMALL E - MAKE_PAIR( 0x30A8, 0x0000 ), // KATAKANA LETTER E - MAKE_PAIR( 0x30AD, 0x0000 ), // KATAKANA LETTER KI - MAKE_PAIR( 0x30AE, 0x0000 ), // KATAKANA LETTER GI - MAKE_PAIR( 0x30B1, 0x0000 ), // KATAKANA LETTER KE - MAKE_PAIR( 0x30B2, 0x0000 ), // KATAKANA LETTER GE - MAKE_PAIR( 0x30B7, 0x0000 ), // KATAKANA LETTER SI - MAKE_PAIR( 0x30B8, 0x0000 ), // KATAKANA LETTER ZI - MAKE_PAIR( 0x30BB, 0x0000 ), // KATAKANA LETTER SE - MAKE_PAIR( 0x30BC, 0x0000 ), // KATAKANA LETTER ZE - MAKE_PAIR( 0x30C1, 0x0000 ), // KATAKANA LETTER TI - MAKE_PAIR( 0x30C2, 0x0000 ), // KATAKANA LETTER DI - MAKE_PAIR( 0x30C6, 0x0000 ), // KATAKANA LETTER TE - MAKE_PAIR( 0x30C7, 0x0000 ), // KATAKANA LETTER DE - MAKE_PAIR( 0x30CB, 0x0000 ), // KATAKANA LETTER NI - MAKE_PAIR( 0x30CD, 0x0000 ), // KATAKANA LETTER NE - MAKE_PAIR( 0x30D2, 0x0000 ), // KATAKANA LETTER HI - MAKE_PAIR( 0x30D3, 0x0000 ), // KATAKANA LETTER BI - MAKE_PAIR( 0x30D4, 0x0000 ), // KATAKANA LETTER PI - MAKE_PAIR( 0x30D8, 0x0000 ), // KATAKANA LETTER HE - MAKE_PAIR( 0x30D9, 0x0000 ), // KATAKANA LETTER BE - MAKE_PAIR( 0x30DA, 0x0000 ), // KATAKANA LETTER PE - MAKE_PAIR( 0x30DF, 0x0000 ), // KATAKANA LETTER MI - MAKE_PAIR( 0x30E1, 0x0000 ), // KATAKANA LETTER ME - MAKE_PAIR( 0x30EA, 0x0000 ), // KATAKANA LETTER RI - MAKE_PAIR( 0x30EC, 0x0000 ), // KATAKANA LETTER RE - MAKE_PAIR( 0x30F0, 0x0000 ), // KATAKANA LETTER WI - MAKE_PAIR( 0x30F1, 0x0000 ), // KATAKANA LETTER WE - MAKE_PAIR( 0x30F6, 0x0000 ), // KATAKANA LETTER SMALL KE - MAKE_PAIR( 0x30F8, 0x0000 ), // KATAKANA LETTER VI - MAKE_PAIR( 0x30F9, 0x0000 ) // KATAKANA LETTER VE + MAKE_PAIR( 0x30A3, 0x0000 ), // KATAKANA LETTER SMALL I + MAKE_PAIR( 0x30A4, 0x0000 ), // KATAKANA LETTER I + MAKE_PAIR( 0x30A7, 0x0000 ), // KATAKANA LETTER SMALL E + MAKE_PAIR( 0x30A8, 0x0000 ), // KATAKANA LETTER E + MAKE_PAIR( 0x30AD, 0x0000 ), // KATAKANA LETTER KI + MAKE_PAIR( 0x30AE, 0x0000 ), // KATAKANA LETTER GI + MAKE_PAIR( 0x30B1, 0x0000 ), // KATAKANA LETTER KE + MAKE_PAIR( 0x30B2, 0x0000 ), // KATAKANA LETTER GE + MAKE_PAIR( 0x30B7, 0x0000 ), // KATAKANA LETTER SI + MAKE_PAIR( 0x30B8, 0x0000 ), // KATAKANA LETTER ZI + MAKE_PAIR( 0x30BB, 0x0000 ), // KATAKANA LETTER SE + MAKE_PAIR( 0x30BC, 0x0000 ), // KATAKANA LETTER ZE + MAKE_PAIR( 0x30C1, 0x0000 ), // KATAKANA LETTER TI + MAKE_PAIR( 0x30C2, 0x0000 ), // KATAKANA LETTER DI + MAKE_PAIR( 0x30C6, 0x0000 ), // KATAKANA LETTER TE + MAKE_PAIR( 0x30C7, 0x0000 ), // KATAKANA LETTER DE + MAKE_PAIR( 0x30CB, 0x0000 ), // KATAKANA LETTER NI + MAKE_PAIR( 0x30CD, 0x0000 ), // KATAKANA LETTER NE + MAKE_PAIR( 0x30D2, 0x0000 ), // KATAKANA LETTER HI + MAKE_PAIR( 0x30D3, 0x0000 ), // KATAKANA LETTER BI + MAKE_PAIR( 0x30D4, 0x0000 ), // KATAKANA LETTER PI + MAKE_PAIR( 0x30D8, 0x0000 ), // KATAKANA LETTER HE + MAKE_PAIR( 0x30D9, 0x0000 ), // KATAKANA LETTER BE + MAKE_PAIR( 0x30DA, 0x0000 ), // KATAKANA LETTER PE + MAKE_PAIR( 0x30DF, 0x0000 ), // KATAKANA LETTER MI + MAKE_PAIR( 0x30E1, 0x0000 ), // KATAKANA LETTER ME + MAKE_PAIR( 0x30EA, 0x0000 ), // KATAKANA LETTER RI + MAKE_PAIR( 0x30EC, 0x0000 ), // KATAKANA LETTER RE + MAKE_PAIR( 0x30F0, 0x0000 ), // KATAKANA LETTER WI + MAKE_PAIR( 0x30F1, 0x0000 ), // KATAKANA LETTER WE + MAKE_PAIR( 0x30F6, 0x0000 ), // KATAKANA LETTER SMALL KE + MAKE_PAIR( 0x30F8, 0x0000 ), // KATAKANA LETTER VI + MAKE_PAIR( 0x30F9, 0x0000 ) // KATAKANA LETTER VE }; @@ -115,60 +115,65 @@ OUString SAL_CALL ignoreIandEfollowedByYa_ja_JP::folding( const OUString& inStr, sal_Int32 startPos, sal_Int32 nCount, Sequence< sal_Int32 >& offset ) throw(RuntimeException) { - // Create a string buffer which can hold nCount + 1 characters. - // The reference count is 0 now. - rtl_uString * newStr = x_rtl_uString_new_WithLength( nCount ); // defined in x_rtl_ustring.h - sal_Unicode * dst = newStr->buffer; - const sal_Unicode * src = inStr.getStr() + startPos; - - // Allocate nCount length to offset argument. - offset.realloc( nCount ); - sal_Int32 *p = offset.getArray(); - sal_Int32 position = startPos; - - // - sal_Unicode previousChar = *src ++; - sal_Unicode currentChar; - - // One to one mapping - oneToOneMapping table(IandE, sizeof(IandE)); - - // Translation - while (-- nCount > 0) { - currentChar = *src ++; - - // the character listed in above table + YA --> the character + A - if (currentChar == 0x30E3 || // KATAKANA LETTER SMALL YA - currentChar == 0x30E4) { // KATAKANA LETTER YA - if (table[ previousChar ] != previousChar) { - *p ++ = position; - position ++; - *p ++ = position; - position ++; - *dst ++ = previousChar; - *dst ++ = 0x30A2; // KATAKANA LETTER A - previousChar = *src ++; - nCount --; - continue; - } + // Create a string buffer which can hold nCount + 1 characters. + // The reference count is 0 now. + rtl_uString * newStr = x_rtl_uString_new_WithLength( nCount ); // defined in x_rtl_ustring.h + sal_Unicode * dst = newStr->buffer; + const sal_Unicode * src = inStr.getStr() + startPos; + + sal_Int32 *p, position; + if (useOffset) { + // Allocate nCount length to offset argument. + offset.realloc( nCount ); + p = offset.getArray(); + position = startPos; } - *p ++ = position; - position ++; - *dst ++ = previousChar; - previousChar = currentChar; - } + // + sal_Unicode previousChar = *src ++; + sal_Unicode currentChar; + + // One to one mapping + oneToOneMapping table(IandE, sizeof(IandE)); + + // Translation + while (-- nCount > 0) { + currentChar = *src ++; + + // the character listed in above table + YA --> the character + A + if (currentChar == 0x30E3 || // KATAKANA LETTER SMALL YA + currentChar == 0x30E4) { // KATAKANA LETTER YA + if (table[ previousChar ] != previousChar) { + if (useOffset) { + *p ++ = position++; + *p ++ = position++; + } + *dst ++ = previousChar; + *dst ++ = 0x30A2; // KATAKANA LETTER A + previousChar = *src ++; + nCount --; + continue; + } + } + + if (useOffset) + *p ++ = position++; + *dst ++ = previousChar; + previousChar = currentChar; + } - if (nCount == 0) { - *p = position; - *dst ++ = previousChar; - } + if (nCount == 0) { + if (useOffset) + *p = position; + *dst ++ = previousChar; + } - *dst = (sal_Unicode) 0; + *dst = (sal_Unicode) 0; - newStr->length = sal_Int32(dst - newStr->buffer); - offset.realloc(newStr->length); - return OUString( newStr ); // defined in rtl/usrting. The reference count is increased from 0 to 1. + newStr->length = sal_Int32(dst - newStr->buffer); + if (useOffset) + offset.realloc(newStr->length); + return OUString( newStr ); // defined in rtl/usrting. The reference count is increased from 0 to 1. } } } } } |