1 /************************************************************** 2 * 3 * Licensed to the Apache Software Foundation (ASF) under one 4 * or more contributor license agreements. See the NOTICE file 5 * distributed with this work for additional information 6 * regarding copyright ownership. The ASF licenses this file 7 * to you under the Apache License, Version 2.0 (the 8 * "License"); you may not use this file except in compliance 9 * with the License. You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, 14 * software distributed under the License is distributed on an 15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16 * KIND, either express or implied. See the License for the 17 * specific language governing permissions and limitations 18 * under the License. 19 * 20 *************************************************************/ 21 22 23 #ifndef _I18N_TRANSLITERATION_TRANSLITERATION_IGNORE_H_ 24 #define _I18N_TRANSLITERATION_TRANSLITERATION_IGNORE_H_ 25 26 #include <transliteration_commonclass.hxx> 27 #include <i18nutil/oneToOneMapping.hxx> 28 29 typedef sal_Unicode (*TransFunc)(const sal_Unicode); 30 31 typedef struct { 32 sal_Unicode previousChar; 33 sal_Unicode currentChar; 34 sal_Unicode replaceChar; 35 sal_Bool two2one; 36 } Mapping; 37 38 namespace com { namespace sun { namespace star { namespace i18n { 39 40 class transliteration_Ignore : public transliteration_commonclass 41 { 42 public: 43 virtual rtl::OUString SAL_CALL 44 folding( const rtl::OUString& inStr, sal_Int32 startPos, sal_Int32 nCount, com::sun::star::uno::Sequence< sal_Int32 >& offset); 45 46 // This method is shared. 47 sal_Bool SAL_CALL 48 equals( const rtl::OUString& str1, sal_Int32 pos1, sal_Int32 nCount1, sal_Int32& nMatch1, 49 const rtl::OUString& str2, sal_Int32 pos2, sal_Int32 nCount2, sal_Int32& nMatch2 ); 50 51 // This method is implemented in sub class if needed. Otherwise, the method implemented in this class will be used. 52 com::sun::star::uno::Sequence< rtl::OUString > SAL_CALL 53 transliterateRange( const rtl::OUString& str1, const rtl::OUString& str2 ); 54 55 56 // Methods which are shared. 57 sal_Int16 SAL_CALL getType( ); 58 59 rtl::OUString SAL_CALL 60 transliterate( const rtl::OUString& inStr, sal_Int32 startPos, sal_Int32 nCount, com::sun::star::uno::Sequence< sal_Int32 >& offset ); 61 62 virtual sal_Unicode SAL_CALL 63 transliterateChar2Char( sal_Unicode inChar); 64 65 com::sun::star::uno::Sequence< rtl::OUString > SAL_CALL 66 transliterateRange( const rtl::OUString& str1, const rtl::OUString& str2, XTransliteration& t1, XTransliteration& t2 ); 67 68 protected: 69 TransFunc func; 70 oneToOneMapping *table; 71 Mapping *map; 72 }; 73 74 #define TRANSLITERATION_IGNORE( name ) \ 75 class ignore##name : public transliteration_Ignore {\ 76 public:\ 77 ignore##name ();\ 78 }; 79 80 #if defined( TRANSLITERATION_BaFa_ja_JP ) || defined( TRANSLITERATION_ALL ) 81 TRANSLITERATION_IGNORE(BaFa_ja_JP) 82 #endif 83 #if defined( TRANSLITERATION_HyuByu_ja_JP ) || defined( TRANSLITERATION_ALL ) 84 TRANSLITERATION_IGNORE(HyuByu_ja_JP) 85 #endif 86 #if defined( TRANSLITERATION_SeZe_ja_JP ) || defined( TRANSLITERATION_ALL ) 87 TRANSLITERATION_IGNORE(SeZe_ja_JP) 88 #endif 89 #if defined( TRANSLITERATION_TiJi_ja_JP ) || defined( TRANSLITERATION_ALL ) 90 TRANSLITERATION_IGNORE(TiJi_ja_JP) 91 #endif 92 #if defined( TRANSLITERATION_MiddleDot_ja_JP ) || defined( TRANSLITERATION_ALL ) 93 TRANSLITERATION_IGNORE(MiddleDot_ja_JP) 94 #endif 95 #if defined( TRANSLITERATION_MinusSign_ja_JP ) || defined( TRANSLITERATION_ALL ) 96 TRANSLITERATION_IGNORE(MinusSign_ja_JP) 97 #endif 98 #if defined( TRANSLITERATION_Separator_ja_JP ) || defined( TRANSLITERATION_ALL ) 99 TRANSLITERATION_IGNORE(Separator_ja_JP) 100 #endif 101 #if defined( TRANSLITERATION_Space_ja_JP ) || defined( TRANSLITERATION_ALL ) 102 TRANSLITERATION_IGNORE(Space_ja_JP) 103 #endif 104 #if defined( TRANSLITERATION_TraditionalKana_ja_JP ) || defined( TRANSLITERATION_ALL ) 105 TRANSLITERATION_IGNORE(TraditionalKana_ja_JP) 106 #endif 107 #if defined( TRANSLITERATION_TraditionalKanji_ja_JP ) || defined( TRANSLITERATION_ALL ) 108 TRANSLITERATION_IGNORE(TraditionalKanji_ja_JP) 109 #endif 110 #if defined( TRANSLITERATION_ZiZu_ja_JP ) || defined( TRANSLITERATION_ALL ) 111 TRANSLITERATION_IGNORE(ZiZu_ja_JP) 112 #endif 113 #undef TRANSLITERATION_IGNORE 114 115 #define TRANSLITERATION_IGNORE( name ) \ 116 class ignore##name : public transliteration_Ignore {\ 117 public:\ 118 ignore##name () {\ 119 func = (TransFunc) 0;\ 120 table = 0;\ 121 map = 0;\ 122 transliterationName = "ignore"#name;\ 123 implementationName = "com.sun.star.i18n.Transliteration.ignore"#name;\ 124 };\ 125 rtl::OUString SAL_CALL folding( const rtl::OUString& inStr, sal_Int32 startPos, sal_Int32 nCount, \ 126 com::sun::star::uno::Sequence< sal_Int32 >& offset); \ 127 }; 128 129 #if defined( TRANSLITERATION_KiKuFollowedBySa_ja_JP ) || defined( TRANSLITERATION_ALL ) 130 TRANSLITERATION_IGNORE(KiKuFollowedBySa_ja_JP) 131 #endif 132 #if defined( TRANSLITERATION_IandEfollowedByYa_ja_JP ) || defined( TRANSLITERATION_ALL ) 133 TRANSLITERATION_IGNORE(IandEfollowedByYa_ja_JP) 134 #endif 135 #if defined( TRANSLITERATION_IterationMark_ja_JP ) || defined( TRANSLITERATION_ALL ) 136 TRANSLITERATION_IGNORE(IterationMark_ja_JP) 137 #endif 138 #if defined( TRANSLITERATION_ProlongedSoundMark_ja_JP ) || defined( TRANSLITERATION_ALL ) 139 TRANSLITERATION_IGNORE(ProlongedSoundMark_ja_JP) 140 #endif 141 #undef TRANSLITERATION_IGNORE 142 143 #define TRANSLITERATION_IGNORE( name ) \ 144 class ignore##name : public transliteration_Ignore {\ 145 public:\ 146 ignore##name () {\ 147 func = (TransFunc) 0;\ 148 table = 0;\ 149 map = 0;\ 150 transliterationName = "ignore"#name;\ 151 implementationName = "com.sun.star.i18n.Transliteration.ignore"#name;\ 152 };\ 153 rtl::OUString SAL_CALL folding( const rtl::OUString& inStr, sal_Int32 startPos, sal_Int32 nCount, \ 154 com::sun::star::uno::Sequence< sal_Int32 >& offset); \ 155 using transliteration_Ignore::transliterateRange;\ 156 com::sun::star::uno::Sequence< rtl::OUString > SAL_CALL transliterateRange( const rtl::OUString& str1, \ 157 const rtl::OUString& str2 ); \ 158 sal_Unicode SAL_CALL \ 159 transliterateChar2Char( sal_Unicode inChar) \ 160 ;\ 161 }; 162 163 #if defined( TRANSLITERATION_Kana ) || defined( TRANSLITERATION_ALL ) 164 TRANSLITERATION_IGNORE(Kana) 165 #endif 166 #if defined( TRANSLITERATION_Width ) || defined( TRANSLITERATION_ALL ) 167 TRANSLITERATION_IGNORE(Width) 168 #endif 169 #if defined( TRANSLITERATION_Size_ja_JP ) || defined( TRANSLITERATION_ALL ) 170 TRANSLITERATION_IGNORE(Size_ja_JP) 171 #endif 172 #undef TRANSLITERATION_IGNORE 173 174 } } } } 175 176 #endif // _I18N_TRANSLITERATION_TRANSLITERATION_IGNORE_H_ 177